RAG 检索增强生成技术概览
本文介绍了检索增强生成(RAG)技术的基本原理及其在大模型应用中的重要性。RAG 通过检索外部知识库并结合 Prompt 输入大模型,解决了通用模型知识局限、幻觉及数据安全等问题。文章详细阐述了 RAG 的技术架构,包括数据提取阶段的清洗、分块、Embedding 及索引策略,以及推理阶段的查询转换、混合搜索、重排序和生成优化。此外,还探讨了 RAG 面临的检索质量、延迟成本等挑战及未来发展方向,为技术选型和落地实施提供参考。

本文介绍了检索增强生成(RAG)技术的基本原理及其在大模型应用中的重要性。RAG 通过检索外部知识库并结合 Prompt 输入大模型,解决了通用模型知识局限、幻觉及数据安全等问题。文章详细阐述了 RAG 的技术架构,包括数据提取阶段的清洗、分块、Embedding 及索引策略,以及推理阶段的查询转换、混合搜索、重排序和生成优化。此外,还探讨了 RAG 面临的检索质量、延迟成本等挑战及未来发展方向,为技术选型和落地实施提供参考。

将大模型应用于实际业务场景时,通用的基础大模型往往无法满足需求,主要原因包括:
RAG = LLM + 外部知识
RAG(Retrieval-Augmented Generation)检索增强生成通过检索获取相关知识并融入 Prompt,让大模型参考相应知识从而给出合理回答。
旨在从一组给定文档或知识库中检索相关信息。具体流程是将用户查询 Embedding,以便与向量数据库中的上下文信息进行比对。通过相似性搜索,找到向量数据库中最匹配的前 k 个数据。
检索核心分为两部分:
将用户的查询和检索到的额外信息一起嵌入到一个预设的提示模板中。
最终,检索增强的 Prompt 被输入到 LLM 中生成回答。
在进行后续步骤前,确保数据符合以下标准:
分块技术的选择至关重要。不同的文本拆分器会根据不同逻辑拆分文档(如按字符、标记等),取决于数据类型。例如,代码文件与 Markdown 文件需要不同的分块技术。
理想的分块长度(chunk_size)取决于用例:问答可能需要较短的具体分块,摘要则可能需要较长分块。分块过短可能缺乏上下文,过长则包含过多无关信息。
此外,需考虑分块间的**滚动窗口(overlap)**以引入额外上下文。
通常,生成 Embedding 的维度越高,精度越高。根据实验显示,微调 Embedding Model 可带来 5%-10% 的性能提升。
为向量嵌入添加 Metadata 标注可在后续搜索结果处理中发挥重要作用,如进行元数据筛选。例如加入日期、章节引用等额外信息。
当 Metadata 无法充分区分不同上下文类型时,可尝试多重索引技术。针对不同文档类型采用不同索引策略,并在检索时加入索引路由机制。对于表格数据,可提取每个表生成适合检索的摘要,但将原始表返回给 LLM 进行答案合成。
向量数据库和索引库通常采用近似最近邻(ANN)搜索方法,而非传统的 k-最近邻(kNN)。ANN 通过近似计算定位最近邻,可能在精确度上稍逊于 kNN,但效率更高。
利用 LLM 优化查询措辞,直接影响搜索结果:
考虑是否仅使用语义搜索,还是结合关键词搜索。选择混合搜索时,需研究如何在稀疏和密集检索方法之间进行有效权重分配。
调整 alpha 参数平衡基于语义的搜索(alpha=1)和基于关键词的搜索(稀疏,alpha=0)的重要性。混合搜索也可将检索实体关系的知识图技术与 Vector Search 相结合,整合多种搜索系统以实现互补。
用于检索的块不一定是用于生成的相同块。理想情况是嵌入更小的数据块进行检索,同时检索更广泛的上下文。
自然语言 Query 需转换为检索查询语法:
使用重排序模型时,可能需要重新调整搜索结果数量及输入到大模型的经过重排序结果数量。与嵌入模型类似,可能需要针对特定应用场景微调重排序模型。Re-rank 是增强现有搜索系统的辅助工具,允许用户将语义相关性集成到现有系统中,无需重大基础设施修改。
接收用户查询后,由大语言模型决定下一步操作。常见做法包括概述查询内容、对特定数据索引搜索,或尝试多种处理方法并将结果合成一个答案。路由过程通过 LLM 实现,结果按预定义格式返回,指导查询到达指定索引。
与嵌入模型或重排序模型一样,可根据特定用例对 LLM 进行微调,以合并特定的措辞或语气。
在提示中使用约束条件,例如:
Please base your answer only on the search results and nothing else!
Very important! Your answer MUST be grounded in the search results provided.
此外,在提示中使用**少样本示例(Few-shot Examples)**可以提高完成任务的质量。输入到提示中的上下文数量是需要实验的参数。
通过查询压缩技术解决对话上下文问题,将聊天历史与用户查询结合:
基于初始查询和检索到的所有上下文生成 Response:
尽管 RAG 技术显著提升了大模型的应用效果,但仍面临一些挑战:
未来,随着向量数据库技术的成熟和多模态检索的发展,RAG 将在更多垂直领域实现更深度的应用,成为企业级 AI 解决方案的核心组件之一。
RAG 技术通过将外部知识与大模型结合,有效解决了知识时效性、幻觉和数据安全问题。通过合理的 Pipeline 设计,包括数据清洗、分块、索引构建以及高级检索策略,可以显著提升系统的回答质量。在实际落地中,需要根据具体业务场景选择合适的 Embedding 模型、检索算法和生成策略,并持续监控和优化系统性能。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online