《基于 InternLM 和 LangChain 搭建你的知识库》
常见术语
RAG: Retrieval Augmented Generation,检索增强生成
1. 大模型开发范式
1.1 RAG VS Finetune
RAG | Finetune |
---|---|
低成本 | 可个性化微调 |
可实时更新 | 知识覆盖面广 |
受基座模型影响大 | 成本高昂 |
单次回答知识有限 | 无法实时更新 |
1.1.2 Finetune
(2)成本高昂:需要GPU算力以及模型训练知识
3. 构建向量数据库
3.1 加载源文件 → \rightarrow →文档分块 → \rightarrow →文档向量化
- 确定源文件类型,针对不同类型源文件选用不同的加载器
- 核心在于将带格式文本转化为无格式字符串
- 由于单个文档往往超过模型上下文上限,我们需要对加载的文档进行切分
- 一般按字符串长度进行分割
- 可以手动控制分割块的长度和重叠区间长度
- 使用向量数据库来支持语义检索,需要将文档向量化存入向量数据库
- 可以使用任意一种Embedding模型来进行向量化
- 可以使用多种支持语义检索的向量数据库,一般使用轻量级的Chroma
4. 搭建知识库助手
4.1 RAG方案优化建议
- 基于RAG的问答系统性能核心受限于:
- 检索精度
- Prompt性能
- 一些可能的优化点:
- 检索方面:
- 基于语义进行分割,保证每一个chunk的语义完整
- 给每一个chunk生成概括性索引,检索时匹配索引
- Prompt方面:
- 迭代优化Prompt策略
- 检索方面:
南溪:感觉“概括性索引”就有点像论文的摘要。