QCon 旧金山会议:检索增强生成 (RAG) 的实践建议
在最近的 QCon 旧金山会议上,Redis 的首席工程师 Sam Partee 发表了关于检索增强生成 (RAG) 的演讲。他讨论了生成式搜索,该技术结合了大型语言模型 (LLM) 和向量数据库的力量,以提高信息检索的效率和安全性。Partee 介绍了几种创新技巧,例如假设文档嵌入 (HyDE)、语义缓存以及使用前/后过滤。
大型语言模型与向量相似性搜索
生成式 AI 应用在生产环境中面临着诸多挑战,如成本、质量控制(如生成不准确内容,即“幻觉”)、性能速度和安全性。虽然可以通过微调 LLM 来改善这些问题,但基础设施成本和对敏感数据的保护需求往往成为障碍。Partee 提出,可以用检索任务替代生成任务,通过 LLM 和向量相似性搜索来改进相关文档的检索。这种方法通过创建“嵌入”来捕捉文档部分内容的意义,并在用户搜索时检索嵌入空间中相近的文档。
检索增强生成 (RAG)
Partee 引入了检索增强生成 (RAG) 的概念,这是一种快速高效的替代微调的方法。工程师可以预先计算所有可能的答案或相关数据,并使用嵌入向量对其进行索引。这种方法允许实时更新知识库(通过添加新信息向量),同时确保敏感数据不用于模型训练或微调。RAG 可有效应用于多种用例,包括通过检索相关文档进行问答、总结相关段落以及检索客户服务所需信息。
Partee 还提供了实施 RAG 系统的实用指南,讨论了两个关键抽象层次:离线过程(用于创建和存储向量)和在线过程(基于用户查询生成提示)。在离线过程中,工程师处理所有文本以创建编码文本块意义的向量。他提到两种方法:使用文档块单独总结或使用句子及其上下文。离线向量生成的目标是确保每个文本块的特异性,同时考虑上下文。
实用技巧与建议
Partee 讨论了设置向量搜索系统的多种技巧。首先是使用混合搜索,即结合传统搜索方法(如预过滤和后过滤)。混合搜索仍然使用向量搜索来找到最相关信息,但可以轻松过滤掉不必要的信息。Redis 最近推出的 Redis Vector Library (RVL) 支持这一功能。
第二个技巧是使用假设文档嵌入 (HyDE) 方法。工程师不是搜索与问题相近的向量,而是搜索与假设答案相近的向量。假设答案可以由 LLM 生成,生成的答案通常比问题更接近检索的嵌入。
最后一个建议涉及系统级服务,包括更新向量嵌入、文档级记录以及在无法使用前两种方法时“热交换”数据库。他还描述了语义缓存,即如果已经生成了与非常相似的问题的答案,可以直接返回该答案,而不需要重新生成。这可以显著提高 LLM 的每秒查询 (QPS) 性能。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。