RAG 知识库搭建指南
方案选择
目前的方案基本上可以分为:
- LLM + Fine-tune:对已有的大模型进行微调,这种方式成本高,效果不一定很好。
- LLM + 外挂知识库:即本文着重介绍的 RAG(Retrieval-Augmented Generation)架构,通过检索外部知识增强生成效果。
环境搭建
Python 环境
- 安装 conda
brew install miniconda
- 创建自定义虚拟环境
conda create -n rag_env python=3.10
- 激活虚拟环境
conda activate rag_env
NLP 相关依赖安装
自然语言处理(NLP)是人工智能的一个分支,允许机器理解、处理和操纵人类语言。
PyTorch
conda install pytorch torchvision torchaudio -c pytorch
Numpy & Scipy
conda install numpy scipy
Gensim
⚠️ Gensim 依赖于 scipy 和 numpy,一定要先安装前两者再安装 gensim。Gensim 是一个著名的开源 Python 库,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达。支持 TF-IDF、LDA 和 word2vec 等多种主题模型算法。
conda install -c conda-forge gensim
NLP 基础概念
- 标记 (Token):是具有已知含义的字符串,可以是单词、数字或标点符号。
- 句子 (Sentence):是一组意义完整的记号集合。
- 段落 (Paragraph):是句子或短语的集合。
- 文档 (Documents):可能是一个句子、一个段落或一组段落。
- 语料 (Corpus):通常是作为词袋的原始文档集合。
- 稀疏向量 (SparseVector):通常略去向量中多余的 0 元素,表示为 (index, value) 元组。
- 模型 (Model):定义了两个向量空间的变换。
模型介绍
Word2Vec
Word2Vec 是一种用于处理自然语言处理的模型,由 Google 研究员 Mikolov 等人于 2013 年提出。它通过训练海量文本数据,将每个单词转换为具有一定维度的向量,代表该单词的语义。
Word2Vec 包括 Skip-Gram 和 CBOW 两种模型:
- Skip-Gram:通过一个词预测其上下文。
- CBOW:给定一个词的上下文词汇,预测这个词。
这两种模型通过学习词汇与其上下文之间的关系获得词的向量表示,向量距离可衡量词语义相似度。
同类型模型
Word2Vec 模型较老,本教程主要用于教学实践。若追求质量效率,可尝试其他词向量模型:


