网易首页 > 网易号 > 正文 申请入驻

四种无向量RAG 方案实测:BM25、GraphRAG、Tree Search、Agent

0
分享至

来源:市场资讯

(来源:DeepHub IMBA)

基于向量的 RAG 优化的是语义相似度(semantic similarity):比如"不允许退货的政策"和"允许退货的政策"这两个查询会产生几乎相同的 embedding。模型理解的不是逻辑而是向量空间中的邻近关系。

更麻烦的是分块(chunking):把文档机械切成片段,会把逻辑连贯性一并打碎。一个定义落在一个 chunk 里,约束它的条件却落在另一个 chunk 里。LLM 拿到的是不完整的上下文所以也只能靠猜。

比如说在受监管的系统里(法律、金融、医疗),这就变成了法律责任。


我没有使用合成基准测试,而是准备了一个小语料库:四份企业文档,JSON 格式,预先抽取好实体与关系。

 ["id": "doc1","title": "Refund Policy 2026","content": "Our refund policy allows for refunds within 30 days of purchase. Digital goods are non-refundable. Error code E-4012 indicates a failed refund transaction due to expired card.","entities": ["Refund", "30 days", "Digital goods", "E-4012"],"relationships": [["Refund", "has condition", "30 days"], ["E-4012", "means", "expired card"]]},"id": "doc2","title": "Q3 Revenue Report","content": "In Q3 2025, our revenue grew by 15% due to the successful launch of Product X. Manufacturer Z provided critical components. However, supply chain issues with Supplier Y caused minor delays.","entities": ["Q3 2025", "Revenue", "Product X", "Manufacturer Z", "Supplier Y"],"relationships": [["Product X", "drove", "Revenue"], ["Manufacturer Z", "provided", "components"], ["Supplier Y", "caused", "delays"]]]

四种方法都查这一份数据集,但每种方法分别使用刻意挑选、能发挥其长处的查询。得到的结果是:没有任何一种方法是通用的。

方法一:BM25词法检索(Lexical retrieval)


查找具体标识符的场景:错误码、条款编号、产品名称。BM25 不理解含义,它只统计某个词在一篇文档中出现多少次,以及该词在整个语料库中有多稀有(TF-IDF)。这和 Google 搜索最底层做的事情是同一件。

代码(Python,约 30 行)

 from rank_bm25 import BM25Okapitokenized_corpus = [doc['content'].lower().split() for doc in data]bm25 = BM25Okapi(tokenized_corpus)query = "error code E-4012"tokenized_query = query.lower().split()doc_scores = bm25.get_scores(tokenized_query)

测试结果

 Query: 'error code E-4012'[doc1] Refund Policy 2026  - Score: 2.2774[doc2] Q3 Revenue Report   - Score: 0.0000[doc3] Cloud Migration      - Score: 0.0000[doc4] Financial Stability  - Score: 0.0000Best match: Refund Policy 2026

精准命中,零噪声。基于向量的 RAG 在这种情况下可能会从另一个上下文里返回一份讲"transaction errors"的文档,因为"error"的 embedding 很相似。BM25 字面地搜索 E-4012,要么找到,要么找不到。

但是,查询"OOM error"匹配不到讲"out of memory crash"的文档。BM25 不懂同义词。

方法二:GraphRAG 知识图谱遍历

需要把多个来源的事实连起来的时候。经典的多跳(multi-hop)问题:是谁为推动了营收增长的那个产品提供了组件?回答它需要遍历多个图节点。

代码(Python,NetworkX)

 import networkx as nxG = nx.DiGraph()for doc in data:for entity in doc["entities"]:G.add_node(entity, source_doc=doc['id'])for subj, pred, obj in doc["relationships"]:G.add_edge(subj, obj, relation=pred)

测试结果

 Query: What drove Revenue?Relationship found: [Product X] --(drove)--> [Revenue]Additional fact:    [Manufacturer Z] --(provided)--> [components]

两跳、两个事实,外加一条完整的推理路径。换成基于向量的 RAG,拿到的只会是关于营收的 chunk,却没有任何信息能说明营收为什么会增长,因为图谱给出的是因果上下文。

而且构建图谱需要干净、结构化的数据。如果文档是没有格式的 PDF 或零散笔记,实体抽取会很糟糕,图谱也就没用了。

方法三:Tree Search(PageIndex)文档树导航

面对一份结构良好、篇幅很长的文档时——年度报告、法律合同、技术规范——希望系统像分析师那样先扫一眼目录,而不是从头读到尾。

工作方式

  1. 把文档解析为树:标题 → 章节 → 子章节,并附短摘要。

  2. AI 模型在顶层只读标题和摘要。

  3. 选出最可能的节点,"进入"它,读取子章节,重复这一过程,直到抵达相关片段。

  4. 此时才取出全文,并生成答案。

测试结果

 Query: 'financial stability risks'Scanning node: Documents-> Analyzing: Refund Policy 2026        - skipped-> Analyzing: Q3 Revenue Report         - skipped-> Analyzing: Cloud Migration            - skipped-> Analyzing: Annual Report - Financial Stability - HITSelected node: doc4 - Annual Report - Financial StabilityContent: The board has approved a new budget for Q4 to mitigate risks identified in Q3.

模型扫过标题,拒掉不相关的章节,最后定位到正确的文档,全程没有做任何 embedding。在真实系统里树会有多层嵌套,每个节点都包含由 LLM 生成的摘要。

好的地方是,可以清楚看到系统选择了哪个章节、为什么这样选。在受监管的系统里,这不是"锦上添花",而是硬性要求。

但是,如果遇到没有标题的文档(聊天记录、零散笔记)则无法生成树,导航过程中额外的 LLM 调用也意味着时间和金钱成本。

方法四:Agentic Search 自主研究员

问题复杂、多步骤并且事先不知道该去哪里找答案时。Agent 会自己规划策略,调用工具,评估结果,再决定要不要继续搜索。

代码(agent 循环模拟)

 def agent_loop(data, query):print("Agent: First, I'll search titles for 'Refund'.")results = tool_search_title(data, "Refund")if not results:print("Agent: Nothing. Searching deeper in content.")results = tool_search_content(data, "Refund")print(f"Agent: Got a result: {results[0]['title']}. Generating answer.")return results[0]['content']

测试结果

 Agent: Received query: What is your refund policy?Agent (Thinking): Searching for refund policy documents by title.[Tool] Searching titles for: 'Refund'Agent: Result: ['Refund Policy 2026']. I have enough information.Answer: Our refund policy allows for refunds within 30 days...

Agent 自行决定如何搜索,并在拿到足够结果时停下。在真实系统中(搭配 o3 或 Gemini 2.5 Pro 这类推理模型),Agent 可以把复杂问题拆解成子查询,交叉验证结果,并回溯到先前的步骤。

这是最贵的方案。每一步思考都是一次独立的 LLM 调用,查询量一大,成本会迅速膨胀;能力较弱的模型还可能陷入无限循环。

方法对比以及如何选择


不要根据哪种方法听起来更前沿来挑选,要看当前系统在哪里出问题:

  1. 返回的文档相似但错误?→ 加 BM25 或结构化信号——问题出在精确度。

  2. 完全找不到相关文档?→ 加向量检索——问题出在召回率(recall)。

  3. 复杂查询返回的是垃圾?→ 加 re-ranker 或 Agent 层。

2026 年大多数成熟的系统都是混合式的:向量负责语义召回,BM25 负责精确匹配,re-ranker 负责质量,基于推理的检索负责最难的那部分查询。

原文最好的一条建议是:从自己的系统里挑出 20–30 个真实问题,把两种方案都跑一遍对比结果。一天的评估能省下几个月的架构争论。

本文代码

完整代码已整理成一个开箱即用的仓库,附带共享测试语料库。每种方法都是一个独立的 agentic skill一段轻量级的 Python 脚本,配一个 SKILL.md 描述文件,AI Agent 可以自动发现并执行:

 # Clone and set upgit clone https://gitlab.com/public-ako74programmer/ai-projects/4-vectorless-rag-approaches.gitcd 4-vectorless-RAG-approachessetup.bat          # creates venv and installs dependencies# Activate the environmentvenv\Scripts\activate# Test individual methodspython .agents/skills/bm25-search/bm25.py "error code E-4012"python .agents/skills/graphrag/graphrag.py "Revenue"python .agents/skills/tree-search/tree_search.py "financial stability risks"python .agents/skills/agentic-search/agentic_search.py "Refund"

依赖只有 rank_bm25 和 networkx,没有别的。每个测试都是几十行 Python 代码,可读、可改,可以拿来扩展到自己的数据上。

总结

基于向量的 RAG 不差,只是有局限,这些局限只在生产里才会暴露,不会出现在 demo 里。无向量方案也不是银弹,每种都有自己的弱点。但把它们以合适的方式组合起来,能搭出一套不只是找到信息,而是能找到正确信息的系统。

先从一种方法开始。测出它的失效点。再加上下一种。

by Andrzej K.

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
耿同学的博导杨昀:降为讲师,千万经费被追!真的还是假的?

耿同学的博导杨昀:降为讲师,千万经费被追!真的还是假的?

大江看潮
2026-06-03 09:21:58
痛惜!39岁副教授,突发心梗离世

痛惜!39岁副教授,突发心梗离世

双一流高校
2026-06-03 00:08:06
独家:原中国兵器工业集团董事长实际上是秘书出身!33岁就当集团办公厅主任  很优秀!

独家:原中国兵器工业集团董事长实际上是秘书出身!33岁就当集团办公厅主任  很优秀!

新浪财经
2026-06-03 02:10:08
王月眉,被驱逐出中国!

王月眉,被驱逐出中国!

新动察
2026-06-03 14:10:21
机器人“搭子”来了!全球首款全尺寸超仿生人形机器人开始预售

机器人“搭子”来了!全球首款全尺寸超仿生人形机器人开始预售

深圳晚报
2026-06-03 08:01:52
苏州一地厂房发生爆炸?当地政府回应:系废品回收仓库发生火灾,2人灼伤

苏州一地厂房发生爆炸?当地政府回应:系废品回收仓库发生火灾,2人灼伤

都市快报橙柿互动
2026-06-03 19:07:55
难堪大任!王楚钦任国乒队长不到36小时,乒协主席王励勤受到牵连

难堪大任!王楚钦任国乒队长不到36小时,乒协主席王励勤受到牵连

削桐作琴
2026-06-03 16:23:15
媒体:继稻城亚丁后湖北神农架也被指“圈路收费”,游客被迫多绕百公里

媒体:继稻城亚丁后湖北神农架也被指“圈路收费”,游客被迫多绕百公里

澎湃新闻
2026-06-03 17:13:12
山东一知名留学机构负责人被曝失联,员工称遭欠薪数月,警方:已接到多人报警

山东一知名留学机构负责人被曝失联,员工称遭欠薪数月,警方:已接到多人报警

潇湘晨报
2026-06-03 18:06:41
无法接受?新加坡联合早报:中国不是你的祖国,你们有自己的祖国

无法接受?新加坡联合早报:中国不是你的祖国,你们有自己的祖国

凡知
2026-06-03 06:30:41
“价格暴涨近1000%”,深圳有老板被追着出货,亿元大单明显增多;我国3D打印机出口,深圳企业占比86%

“价格暴涨近1000%”,深圳有老板被追着出货,亿元大单明显增多;我国3D打印机出口,深圳企业占比86%

深圳梦
2026-06-02 20:54:51
CBA最新消息!北控男篮主帅确定,杜锋完成签约

CBA最新消息!北控男篮主帅确定,杜锋完成签约

体坛瞎白话
2026-06-03 16:00:25
陕西一公司半夜通知“全员放假”,一夜搬空,领导失联,200多名员工数百万工资被拖欠,员工:连维权都不知怎么办

陕西一公司半夜通知“全员放假”,一夜搬空,领导失联,200多名员工数百万工资被拖欠,员工:连维权都不知怎么办

大象新闻
2026-06-03 16:47:13
一男子在湖南邵阳县街头殴打路人,警方通报:嫌疑人已抓获

一男子在湖南邵阳县街头殴打路人,警方通报:嫌疑人已抓获

界面新闻
2026-06-03 19:46:57
89岁魏宗万逝世,他与二婚妻子走过50年金婚,这才是德艺双馨

89岁魏宗万逝世,他与二婚妻子走过50年金婚,这才是德艺双馨

社会日日鲜
2026-06-03 08:07:39
31条中日航线5月取消全部航班

31条中日航线5月取消全部航班

财联社
2026-06-03 15:56:05
Shams:库里与李宁10年合同总价超4亿美元,他曾拒绝更丰厚报价

Shams:库里与李宁10年合同总价超4亿美元,他曾拒绝更丰厚报价

懂球帝
2026-06-03 09:53:28
官方严厉表态,痛批综艺乱象,刘涛郑恺等8位艺人遭点名批评

官方严厉表态,痛批综艺乱象,刘涛郑恺等8位艺人遭点名批评

一盅情怀
2026-06-03 15:30:26
血压飙升!上海父亲晒聊天记录,“巨婴”儿子强行索要2万旅游费

血压飙升!上海父亲晒聊天记录,“巨婴”儿子强行索要2万旅游费

火山詩话
2026-06-02 14:27:07
家长投诉学校:没有午餐,不能校内休息,结果评论区都在支持学校

家长投诉学校:没有午餐,不能校内休息,结果评论区都在支持学校

谭谈社会
2026-06-03 07:11:47
2026-06-03 20:08:49
新浪财经 incentive-icons
新浪财经
新浪财经是一家创建于1999年8月的财经平台
3458741文章数 7796关注度
往期回顾 全部

科技要闻

传DeepSeek融资意向500亿:腾讯投100亿

头条要闻

民警驾车致1死1残获刑1年2个月 女伤者刚试管有了胚胎

头条要闻

民警驾车致1死1残获刑1年2个月 女伤者刚试管有了胚胎

体育要闻

选择中国品牌的库里,和他们的巨大野心

娱乐要闻

官方痛批乱象 刘涛郑恺等艺人遭点名

财经要闻

AI,开始偷懒了?

汽车要闻

专访蒋平:安全不做高低配 长安要让安全技术普惠

态度原创

本地
数码
手机
房产
公开课

本地新闻

用杨柳青年画的方式,打开天津

数码要闻

全球首款UWB 8K键盘登场!CHERRY XTRFY K63W Pro发布

手机要闻

全能影像旗舰怎么选?vivo S60领衔四款中端机型横评

房产要闻

突发!254亩调规,海口江东的超级学校真的快来了!

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版