美文网首页
RAG 学习笔记(三)

RAG 学习笔记(三)

作者: 啊阿伟啊 | 来源:发表于2024-01-08 19:47 被阅读0次

基于博文 Advanced RAG Techniques: an Illustrated Overview 的学习和练习的记录。

中文内容可以查看博主@宝玉的译文 高级 RAG 技术:图解概览 [译]

系列笔记:
RAG 学习笔记(一)
RAG 学习笔记(二)

搜索索引

  1. 向量存储索引
  2. 层次索引
  3. 假设问题和HyDE
  4. 丰富上下文
  5. 融合检索或混合搜索

向量存储索引

基础的索引检索结构

搜索索引 是RAG pipeline 中的关键组成部分,用于存储前面文本块向量化后的数据。

搜索索引类型:

  1. 平面索引(flat index):最简单的实现,可以通过计算查询文本的向量和所有文本块向量的距离,来获取最相关的查询结果。
  2. 向量索引(vector index):在1万个元素的量级上可以进行高效检索,基于近似最近邻居算法,如聚类、树结构或 HNSW 算法。这类索引有: faissnmslibannoy
  3. 托管服务:如 OpenSearch、ElasticSearch 和向量数据库,它们自动处理前文提到的数据摄取流程,例如 PineconeWeaviateChroma

可以将文本的元数据与向量存储到一起,使用元数据过滤器可以按照日期或来源等条件进行信息检索。

LlamaIndex 支持多种向量存储索引

层次索引

层次索引结构

场景:

需要从有许多文档中进行高效的检索,找到相关的信息,然后整合到一个答案中,并带有参考来源。

实现:

创建两个索引:

  1. 一个索引由文档摘要构成
  2. 一个索引由文本块构成

分两步搜索:

  1. 先从文档摘要索引中过滤相关文档
  2. 在这些文档的范围内,在文本块中进行搜索

假设问题和 HyDE

假设问题法:

  1. 使用 LLM 为每个文本块生成一个问题,然后将问题 embedding 为向量
  2. 搜索时,先使用问题搜索,找到相似问题的索引
  3. 然后找到这些问题对应的文本块,使用文本块作为上下文发送给 LLM 来获取答案。

优点:
查询和假设问题之间的语义相似度更好,对比直接搜索文本块,该方法的质量更高。

另外一种方法叫 HyDE,与假设问题方法逻辑相反:

  • 根据输入问题生成回答,然后使用回答文本的向量和问题向量来提高搜索的质量。

相关文章

网友评论

      本文标题:RAG 学习笔记(三)

      本文链接:https://www.haomeiwen.com/subject/wftnndtx.html