>许多抹布应用程序采用简化的检索过程:将文档细分为块,转换为嵌入,并存储在矢量数据库中。 查询基于嵌入的相似性触发最类似文档的TOP-K检索。 但是,这种方法受到限制,尤其是在广泛的数据集中。 块歧义和次优信息检索可能会损害准确性。 通过利用文档结构来提高递归检索,从而提高了检索精度。 它没有直接检索块,而是优先考虑相关摘要,随后钻到相关的块以获得更为重点的结果。
本文详细介绍了递归检索,并使用llamaindex引导您实施。
rag和langchain
>
使用LlamainDex>
步骤1:文档加载和准备 使用>加载文档。 每个文档都会收到一个标题和元数据(例如类别),以增强过滤。 已加载的文档存储在字典中以易于访问。
>>步骤2:llm和块设置
>
SimpleDirectoryReader
> llm(例如OpenAI的GPT-4O Mini),以及用于块创建的句子分配器和用于过程监视的回调管理器。
from llama_index.core import SimpleDirectoryReader # ... (Code for loading documents remains the same) ...
步骤3:向量索引创建和摘要生成> 为每个文档创建一个向量索引,以启用基于相似性的检索。 llm生成的摘要存储为
>对象。>
from llama_index.llms.openai import OpenAI from llama_index.core.callbacks import LlamaDebugHandler, CallbackManager from llama_index.core.node_parser import SentenceSplitter # ... (Code for LLM and chunking setup remains the same) ...
步骤4:顶级矢量索引构建
>由生成的摘要构建了顶级矢量索引,在访问详细的块之前,可以初步检索相关的摘要。>
IndexNode
from llama_index.core import VectorStoreIndex, SummaryIndex from llama_index.core.schema import IndexNode # ... (Code for building vector indices and generating summaries remains the same) ...
> 配置了递归检索器,将顶级检索器与单个文档检索器相结合,以促进层次检索过程。
>>
# ... (Code for building the top-level vector index remains the same) ...
>使用配置的递归猎犬执行 示例查询。
>from llama_index.core import SimpleDirectoryReader
# ... (Code for loading documents remains the same) ...
递归检索,利用文档摘要和层次结构,增强了检索到的块的相关性,尤其是与大数据集的相关性。 它为在数据丰富的环境中构建准确的检索系统提供了强大的解决方案。 在链接的博客文章中可以进一步探索抹布技术。
以上是RAG的递归检索:LlamainDex实施的详细内容。更多信息请关注PHP中文网其他相关文章!