当前位置: 首页 > news >正文

LlamaIndex 检索器 Retriever

检索器负责在给定用户查询(或聊天消息)的情况下获取最相关的上下文。

它可以建立在索引之上,也可以独立定义。它作为查询引擎(和聊天引擎)中用于检索相关上下文的关键构建模块。

使用方法

从索引中获取检索器

retriever = index.as_retriever()

为问题检索相关上下文:

nodes = retriever.retrieve("蒲公英的作用?")

完整示例:

from llama_index.core import Settings, StorageContext, load_index_from_storagefrom my_llms.MyLLMsClients import MyLLMsClientsSettings.llm = MyLLMsClients.deepseek_client()
Settings.embed_model = MyLLMsClients.qwen_embeddings()# 加载已持久化的索引
storage_context = StorageContext.from_defaults(persist_dir="../storage")# 加载索引
index = load_index_from_storage(storage_context=storage_context)# 获取检索器
retriever = index.as_retriever(similarity_top_k=5, # 返回相似度最高的前 k 个结果, 默认值: 2
)# 为问题检索相关上下文
nodes = retriever.retrieve("介绍以下蒲公英")print(nodes)

检索到的Node节点:

[NodeWithScore(node=TextNode(id_='49da7962-8fe0-43be-8a5f-fad06ac3440b', embedding=None, metadata={'file_path': 'D:\\01-LlaDeepSeek-蒲公英.md', 'file_name': 'DeepSeek-蒲公英.md', 'file_type': 'text/markdown', 'file_size': 2391, 'creation_date': '2025-07-12', 'last_modified_date': '2025-07-12'}, excluded_embed_metadata_keys=['file_name', 'file_type', 'file_size', 'creation_date', 'last_modified_date', 'last_accessed_date'],excluded_llm_metadata_keys=['file_name', 'file_type', 'file_size', 'creation_date', 'last_modified_date', 'last_accessed_date'], relationships={<NodeRelationship.SOURCE: '1'>: RelatedNodeInfo(node_id='61a454d4-11e7-4e5a-8466-5e46f951a93e', node_type='4', metadata={'file_path': 'D:\\01-Lla\本草纲目\\DeepSeek-蒲公英.md', 'file_name': 'DeepSeek-蒲公英.md', 'file_type': 'text/markdown', 'file_size': 2391, 'creation_date': '2025-07-12', 'last_modified_date': '2025-07-12'}, hash='6a54f6f1f00dd9488d4d7ac1a21af443d69d69b5c3745e80db8450816e69489b'), <NodeRelationship.NEXT: '3'>: RelatedNodeInfo(node_id='af068d0d-37b7-40d2-9cd3-059176d5af86', node_type='1', metadata={}, hash='7d60ffdf1172bc7560732fe82933d1e363ba6ffa25d2421adebf0ed78d10db60')}, metadata_template='{key}: {value}', metadata_separator='\n', text='蒲公英(学名:**Taraxacum**)是。\r\n  - 根可烘焙后替代咖啡(蒲公英咖啡)。\r\n- **其他用途**:\r\n  - 汁液曾被用作天然染料或橡胶原料(部分品种含乳胶)。\r\n\r\n---\r\n\r\n### **5.', mimetype='text/plain', start_char_idx=0, end_char_idx=829, metadata_seperator='\n', text_template='{metadata_str}\n\n{content}'), score=0.7675869519092057), NodeWithScore(node=TextNode(id_='f3fabd45-b876-4f21-b2ba-b3be0d970ef9', embedding=None, metadata={'file_path': 'D:\\01-LlamaIndex\\project\\MyLlamaIndex\\10-检索其Retriever\\..\\data\\本草纲目\\通义千问-蒲公英.md', 'file_name': '通义千问-蒲公英.md', 'file_type': 'text/markdown', 'file_size': 2403, 'creation_date': '2025-07-12', 'last_modified_date': '2025-07-12'}, excluded_embed_metadata_keys=['file_name', 'file_type', 'file_size', 'creation_date', 'last_modified_date', 'last_accessed_date'], excluded_llm_metadata_keys=['file_name', 'file_type', 'file_size', 'creation_date', 'last_modified_date', 'last_accessed_date'], relationships={<NodeRelationship.SOURCE: '1'>: RelatedNodeInfo(node_id='43f8fa95-4138-4ff3-b742-fda8ade753f0', node_type='4', metadata={'file_path': 'D:\\01-LlamaIndex\\project\\MyLlamaIndex\\10-检索其Retriever\\..\\data\\本草纲目\\通义千问-蒲公英.md', 'file_name': '通义千问-蒲公英.md', 'file_type': 'text/markdown', 'file_size': 2403, 'creation_date': '2025-07-12', 'last_modified_date': '2025-07-12'}, hash='075cdf6e3c16762c6a6155395e613dadb7955debcb23bdf472fe27c86b1461c8'), <NodeRelationship.NEXT: '3'>: RelatedNodeInfo(node_id='6d88a2fb-b06e-4191-9bb3-32b8403f5047', node_type='1', metadata={}, hash='ad076e1df247008987d729e5ff8b6f8a26ea3475001bf24246f2400e1df73272')}, metadata_template='{key}: {value}', metadata_separator='\n', text='蒲公英(学名:**Tara尿通淋**:有利尿作用,适用于水肿等症状。\r\n- **抗炎抗菌**:现代研究发现其含有多种活性成分,如黄酮类、萜类化合物等,具有一定的抗炎和抗氧化作用。\r\n\r\n#### 3.', mimetype='text/plain', start_char_idx=0, end_char_idx=706, metadata_seperator='\n', text_template='{metadata_str}\n\n{content}'), score=0.7424136926100374)]

VectorIndexRetriever

完整示例:

from llama_index.core import Settings, SimpleDirectoryReader, VectorStoreIndex
from llama_index.core.indices.vector_store import VectorIndexRetrieverfrom my_llms.dash_scope_client import DashScopeClientSettings.llm = DashScopeClient.get_llm()
Settings.embed_model = DashScopeClient.get_embedder()# 加载数据
documents = SimpleDirectoryReader("../data/vlog").load_data()# 创建索引
index = VectorStoreIndex.from_documents(documents)# 获取检索器
retriever = VectorIndexRetriever(index=index, # 向量索引similarity_top_k=5, # 返回相似度最高的前 k 个结果, 默认值: 2
)nodes = retriever.retrieve("和田玉是如何形成的?")for node in nodes:print(f"文本内容: {node.text[:50]}...")print(f"得分: {node.score}")print("-------------------------------")
文本内容: 其实它形成需要极端的地质条件,很多人可能都想了解。大部分研究人员认为和田玉的形成时间大约在两亿五千万...
得分: 0.6971156252891842
-------------------------------
文本内容: 文件名:地质狼孙春贵-和田玉,中国四大明玉之一的和田玉 和田玉的由来与介绍
作者:地质狼孙春贵
...
得分: 0.6890189978861022
-------------------------------
文本内容: 文件名:地质狼孙春贵-讲解和田玉所出产的产地与鉴别方法 #科普 #和田玉 #玉 #地质 #玉文化
...
得分: 0.6330236593881674
-------------------------------
文本内容: 这个戈壁料往往指的是什么?是原生玉石经过河流、泥石流等自然冲刷、搬运到。上中下游的古河床里面这些河流...
得分: 0.6265738869599385
-------------------------------
文本内容: 因为颜色像红糖,所以被形象的称为糖玉。
- 第七种是墨玉,墨玉在自然光下呈纯黑色,油润度看着也是非...
得分: 0.6086931353934419
-------------------------------

高级检索与搜索

这些指南包含高级的检索技术。有些是常见的方法,如关键词/混合搜索、重新排序等;还有一些是针对 LLM + RAG 工作流程的特定技术,例如由小到大的检索(small-to-big)和自动合并检索(auto-merging retrieval)。

  • Define Custom Retriever

  • BM25 Hybrid Retriever

  • Simple Query Fusion

  • Reciprocal Rerank Fusion

  • Auto Merging Retriever

  • Metadata Replacement

  • Composable Retrievers

自动检索

这些检索技术能够执行半结构化查询,将语义搜索与结构化过滤相结合。

  • Auto-Retrieval (with Pinecone)

  • Auto-Retrieval (with Lantern)

  • Auto-Retrieval (with Chroma)

  • Auto-Retrieval (with BagelDB)

  • Auto-Retrieval (with Vectara)

  • Multi-Doc Auto-Retrieval

知识图谱检索器

  • Knowledge Graph RAG Retriever

组合检索器

这些检索技术是在其他检索技术的基础上组合而成的——提供了层级检索和查询分解等更高层次的功能。

  • Query Fusion

  • Recursive Table Retrieval

  • Recursive Node Retrieval

  • Braintrust

  • Router Retriever

  • Ensemble Retriever

  • Multi-Doc Auto-Retrieval

托管检索器

  • Google

  • Vectara

  • VideoDB

  • Zilliz

  • Amazon Bedrock

其他检索器

这些指南无法明确归类到某个特定类别中,但依然值得关注。

  • Multi-Doc Hybrid

  • You Retriever

  • Text-to-SQL

  • DeepMemory (Activeloop)

  • Pathway

http://www.dtcms.com/a/277990.html

相关文章:

  • 题目V^V
  • 008_Claude_Code开发工具
  • 自注意力机制及其与早期注意力机制的区别
  • C++高频知识点(十)
  • Android 响应式编程完整指南:StateFlow、SharedFlow、LiveData 详解
  • 封装---统一封装处理页面标题
  • 关于 java:11. 项目结构、Maven、Gradle 构建系统
  • DAY02:【ML 第一弹】KNN算法
  • Datawhale AI夏令营——用AI预测新增用户学习笔记
  • 【VLLM】大模型本地化部署
  • 【图片识别内容改名】用图片的内容改图片文件的名字,批量OCR识别图片上的文字并同时进行批量改名的操作步骤和注意事项
  • 深入了解JAVA中Synchronized
  • MD5算法深度剖析与可视化解析
  • Kubernetes集群安装
  • Codeforces Round 1032 (Div. 3)(A-G)
  • 嵌入式 Linux开发环境构建之安装 Samba
  • Wireshark的安装和基本使用
  • C语言---自定义类型(上)(结构体类型)
  • Vue Router 完全指南:从入门到实战,高效管理前端路由
  • C++高频知识点(十二)
  • 【LeetCode数据结构】单链表的应用——反转链表问题、链表的中间节点问题详解
  • 通信原理与USRP :PSK的调制解调(BPSK、QPSK、16PSK) 文本、图片
  • Struts2框架对重定向URL处理不当导致的OGNL注入漏洞(s2-057)
  • 【LeetCode 热题 100】105. 从前序与中序遍历序列构造二叉树——(解法二)O(n)
  • SSE连接错误机制处置
  • lvs负载均衡实操模拟
  • docker高级管理——Compose容器编排与私有仓库
  • 基于YOLOv11的无人机目标检测实战(Windows环境)
  • 小程序部分pai
  • 深度剖析:自定义线程安全 ppp::function 实现 vs std::function