检索增强生成(RAG)与 LLM 知识库应用详解
检索增强生成(Retrieval Augmented Generation,RAG)是一种强大的架构模式,它通过将企业外部知识整合到生成过程中,显著增强了大语言模型(LLM)的性能。RAG 本质上是通过工程化手段,解决 LLM 知识更新困难的问题。其核心手段是利用外挂于 LLM 的知识数据库(通常使用向量数据库)存储未在训练数据集中出现的新数据、领域数据等。
通常而言,RAG 将知识问答分成三个阶段:索引、知识检索和基于内容的问答。这种架构允许模型在回答时引用最新或私有信息,从而减少幻觉并提高准确性。
RAG 的七大关键组成部分
一个完整的 RAG 系统通常包含以下七个关键组件:
1. 自定义知识库(Custom Knowledge Base)
定制知识库是 RAG 的核心基础,由一系列紧密关联且始终保持更新的知识集合构成。它可以表现为多种形态:
- 结构化数据:如 MySQL、PostgreSQL 中的业务数据。
- 非结构化文档:PDF、Word、Markdown 文件、图片、音频、视频等。
- 混合形式:结合上述两者的综合知识库。
2. 分块处理(Chunking)
分块技术是将大规模输入文本有策略地拆解为若干个较小、更易管理的片段(Chunk)的过程。这一过程旨在确保所有文本内容均能适应嵌入模型所限定的输入尺寸,同时有助于显著提升检索效率。
常见的分块策略包括:
- 固定长度分块:按字符数或 token 数切分。
- 语义分块:根据段落或句子边界切分,保持上下文完整性。
- 递归分块:先按较大粒度切分,再对无法容纳的内容进行二次切分。
3. 嵌入模型(Embedding Model)
嵌入模型是一种将多模态数据(文本、图片、音频等)表示为数值向量的技术。这些向量可以输入到机器学习模型中进行计算。
- 功能:负责将原始文本转换成高维空间中的向量表示。
- 原理:语义相似的文本在向量空间中距离更近(例如余弦相似度更高)。
- 常用模型:Sentence-BERT, OpenAI Embeddings, BGE 等。
4. 向量数据库(Vector Database)
向量数据库用于存储预先计算的文本数据向量表示,支持快速检索和相似性搜索。相比传统数据库,它具有以下特性:
- SQL CRUD 操作:支持基本的增删改查。
- 元数据过滤:在向量检索的同时过滤特定属性(如时间、来源)。
- 水平扩展:支持海量数据的分布式存储。
- 代表产品:Milvus, Pinecone, Chroma, Weaviate。
5. 用户聊天界面(User Chat Interface)
这是一个用户友好的前端界面,允许用户与 RAG 系统互动。用户在此输入查询,系统接收后进行处理并返回输出。良好的 UI 设计能提升用户体验,例如显示引用来源、提供追问建议等。
6. 查询引擎(Query Engine)
查询引擎是连接用户请求与后端知识的桥梁。其工作流程如下:
- 获取用户查询字符串。
- 将查询转换为嵌入向量。
- 从向量数据库中检索相关上下文知识。
- 将查询和检索到的上下文一起作为提示词发送给 LLM。
- LLM 生成最终的自然语言响应。
*注:在实际应用中,常使用 Llama-3 等开源模型配合 Ollama 等本地运行工具部署,以保障数据隐私和成本可控。


