[AI纪元]RAG真的过时了吗?初步窥探传统RAG、grep MD、llms wiki方案的优劣势

网上说"RAG 过时了",这个说法有点夸张。更准确地说是:传统"切块 + 向量库 + 相似度召回"的粗糙 RAG 正在被升级 ,而不是 RAG 消失了。现在流行的 Markdown、llms.txtllms-full.txt、Wiki,本质上还是在做"让 AI 更容易拿到正确上下文",只是数据组织方式更轻、更结构化、更适合 Agent 读取。下面会拿ebay外挂客服的一个方案举例

先区分几个概念

RAG 是什么

RAG = Retrieval-Augmented Generation,意思是:

用户提问 → 系统先检索相关资料 → 把资料塞给大模型 → 大模型基于资料回答。

LangChain 现在仍然把 retrieval 到 RAG 作为主流方案:检索让 LLM 在运行时拿到相关上下文,而 RAG 是把检索结果和生成结合起来,产出有依据的回答。(LangChain 文档)

所以 RAG 没过时,过时的是这种低质量做法:

ini 复制代码
把所有 Word/PDF/网页乱切成 500 字
全部丢进向量库
用户一问就 topK=5
然后让模型硬答

这种容易出现:召回错、上下文碎、重复内容多、答案幻觉、成本高。


Markdown 检索为什么火了?

Markdown 的优势是:天然结构化

比如一篇知识文档:

shell 复制代码
# 退款规则

## 买家未付款

如果买家未付款,卖家可以在 4 天后取消订单。

## 买家已付款

如果买家已付款,需要走退款流程。

这比 HTML、PDF、Word 更适合 AI,因为它有:

复制代码
标题层级
列表
代码块
表格
链接
引用

Mintlify 也提到,Markdown 可以绕开复杂 HTML、广告、JavaScript、导航栏等噪音,让 LLM 更容易消费干净内容。(Mintlify)

所以现在很多 AI 知识库会先做:

perl 复制代码
网页 / Word / PDF
        ↓
清洗成 Markdown
        ↓
按标题结构切块
        ↓
grep / 全文检索 / 向量检索 / Agent 读取

grep Markdown 文件怎么做 AI 检索?

最简单的方式不是向量库,而是直接用 grep 或更推荐的 ripgrep,命令是 rg

假设你的知识库目录是这样

csharp 复制代码
knowledge-base/
  ebay/
    shipping.md
    refund.md
    listing-title.md
  tech/
    rag.md
    docker-postgresql.md
  wow/
    patch-12.0.7.md

用户问:

复制代码
eBay 买家未付款怎么处理?

最简单可以直接搜索关键词:

csharp 复制代码
rg "未付款|取消订单|buyer did not pay|unpaid" knowledge-base/

返回:

bash 复制代码
knowledge-base/ebay/refund.md
12: 如果买家未付款,卖家可以在 4 天后取消订单。

然后 AI 读取这个文件附近内容,再回答。


grep 检索的具体操作流程

第一步:把所有知识文档转成 .md

比如:

css 复制代码
原始资料:
PDF、Word、HTML、飞书文档、Notion、Wiki、网页

转换后:
xxx.md

Markdown 文件建议统一格式:

yaml 复制代码
---
title: eBay 退款规则
category: ebay
updated: 2026-05-01
source: internal
---

# eBay 退款规则

## 买家未付款

具体规则......

## 买家已付款

具体规则......

前面的 --- 是元信息,叫 frontmatter,方便后面过滤。


第二步:用 rg 做全文检索

安装:

bash 复制代码
# Windows,使用 winget
winget install BurntSushi.ripgrep.MSVC

# macOS
brew install ripgrep

# Ubuntu
sudo apt install ripgrep

常用命令:

csharp 复制代码
# 搜索关键词
rg "退款" knowledge-base/

# 忽略大小写
rg -i "refund" knowledge-base/

# 显示上下文,前后各 3 行
rg -C 3 "未付款" knowledge-base/

# 只搜 Markdown 文件
rg "未付款" knowledge-base/ -g "*.md"

# 搜多个词
rg "未付款|退款|取消订单" knowledge-base/

# 显示文件名和行号
rg -n "SpeedPAK" knowledge-base/

第三步:让 AI 根据 grep 结果读取相关文件

一个简单的 AI 检索流程可以是:

markdown 复制代码
用户问题:
"SpeedPAK 显示 out for delivery 很久没更新怎么办?"

系统操作:
1. 从问题中提取关键词:
   SpeedPAK、out for delivery、last-mile、物流、派送

2. 执行:
   rg -C 5 "SpeedPAK|out for delivery|last-mile|派送|尾程" knowledge-base/

3. 找到相关 Markdown 文件:
   ebay/shipping-speedpak.md

4. 读取相关段落

5. 让模型基于这些段落回答

伪代码:

javascript 复制代码
import { execSync } from "node:child_process";
import fs from "node:fs";

function searchMarkdown(query) {
  const cmd = `rg -n -C 5 "${query}" ./knowledge-base -g "*.md"`;
  return execSync(cmd, { encoding: "utf-8" });
}

const result = searchMarkdown("SpeedPAK|out for delivery|last-mile|派送");
console.log(result);

grep Markdown 适合什么场景?

适合:

复制代码
文档数量不大:几十篇、几百篇、几千篇
关键词比较明确
文档结构比较清楚
技术文档、FAQ、规则文档、客服知识库
需要低成本、可控、透明

不适合:

复制代码
用户问题和文档关键词差异很大
需要语义理解
文档非常多
问题很抽象
需要跨多个文档综合推理

举个例子。

用户问:

复制代码
买家拍下后一直没付款,我能不能取消?

grep 可以搜:

csharp 复制代码
rg "未付款|取消" knowledge-base/

但如果用户问:

复制代码
订单卡住了,我现在怎么降低损失?

这就不一定能直接命中关键词,需要语义检索或规则推理。


llms.txt 是什么?

llms.txt 是一个放在网站根目录的 Markdown 文件,比如:

arduino 复制代码
https://example.com/llms.txt

它的作用类似"给 AI 看的站点导航"。官方提案说明,/llms.txt 是一种标准化方式,用来帮助 LLM 在推理时使用网站信息。(llms-txt)

典型格式:

markdown 复制代码
# My Docs

> This documentation explains how to use our API.

## Getting Started

- [Quickstart](https://example.com/docs/quickstart.md)
- [Authentication](https://example.com/docs/auth.md)

## API Reference

- [Create Order](https://example.com/docs/api/create-order.md)
- [Refund Order](https://example.com/docs/api/refund-order.md)

它不是直接回答问题,而是告诉 AI:

复制代码
这个网站有哪些重要文档
每个文档大概是什么
应该先看哪里

很多文档平台已经支持自动生成 llms.txtllms-full.txt。Mintlify 文档说它可以自动生成这两类文件,让 ChatGPT、Claude 等工具索引和理解文档。(Mintlify) Fern 也说明 llms.txtllms-full.txt 是为了让 AI 工具发现和索引文档,单页还可以直接获取 Markdown。(Fern)


llms.txt 和 llms-full.txt 的区别

llms.txt

更像目录:

markdown 复制代码
# eBay Seller Knowledge Base

> Internal knowledge base for eBay seller operations.

## Shipping

- [SpeedPAK delivery issues](./shipping/speedpak.md)
- [Packaging standards](./shipping/packaging.md)

## Listing

- [Title writing guide](./listing/title-guide.md)
- [Product condition description](./listing/condition.md)

## Buyer Messages

- [Offer negotiation templates](./messages/offers.md)
- [Shipping delay templates](./messages/shipping-delay.md)

特点:

复制代码
短
结构清楚
适合 Agent 先看目录,再决定读哪个文件

llms-full.txt

更像把所有文档合并成一个大 Markdown:

shell 复制代码
# eBay Seller Knowledge Base

## SpeedPAK delivery issues

完整内容......

## Packaging standards

完整内容......

## Offer negotiation templates

完整内容......

X 的开发者文档也把 llms-full.txt 描述为"完整文档的单个 Markdown 文件",用于给 AI 工具完整上下文。(X Developer Platform)

特点:

复制代码
内容完整
适合小型文档站
适合直接喂给长上下文模型
但太大时会浪费 token

Wiki 检索是怎么做的?

这里的 Wiki 可以分两类。

第一类:Git Wiki / Markdown Wiki

比如:

csharp 复制代码
docs/
wiki/
knowledge-base/

里面全是 .md 文件。

这种最简单,直接:

arduino 复制代码
rg "退款|未付款|取消订单" wiki/

或者加一个 llms.txt

markdown 复制代码
# Company Wiki

> Internal company knowledge base.

## eBay

- [Shipping](./ebay/shipping.md)
- [Refund](./ebay/refund.md)
- [Listing](./ebay/listing.md)

## AI Project

- [RAG Architecture](./ai/rag.md)
- [Agent Context Compression](./ai/context-compression.md)

AI 操作流程:

markdown 复制代码
1. 先读取 llms.txt
2. 判断问题属于哪个目录
3. rg 搜索相关 Markdown
4. 读取相关段落
5. 回答

第二类:Confluence / Notion / MediaWiki 这种在线 Wiki

这种一般要先导出或同步:

arduino 复制代码
Confluence / Notion / 飞书 / 语雀 / Wiki
        ↓
API 拉取页面
        ↓
转成 Markdown
        ↓
保存到本地 / Git / 对象存储
        ↓
建立 llms.txt
        ↓
grep / full-text / vector search

操作架构:

css 复制代码
定时任务
  ↓
拉取 Wiki 页面
  ↓
HTML 清洗
  ↓
转 Markdown
  ↓
按 page_id 保存
  ↓
生成目录 llms.txt
  ↓
提供给 AI 检索

文件可以保存成:

markdown 复制代码
wiki-md/
  confluence/
    refund-policy.md
    shipping-rules.md
    sdk-design.md
  llms.txt
  llms-full.txt

grep Markdown、Wiki、RAG 怎么组合?

最推荐的是混合方案,不要二选一。

小型知识库:grep + Markdown 就够了

适合你现在"几百篇以前的知识文档"的情况。

复制代码
用户问题
  ↓
关键词提取
  ↓
rg 搜 Markdown
  ↓
读取命中文件附近内容
  ↓
AI 回答

优点:

复制代码
简单
便宜
可解释
不用向量库
不用复杂部署

缺点:

复制代码
同义词弱
语义理解弱
跨文档总结弱

中型知识库:Markdown + PostgreSQL 全文检索

你之前问过 PostgreSQL,这里可以这样做:

sql 复制代码
Markdown 文件
  ↓
入库 PostgreSQL
  ↓
使用 full-text search
  ↓
按关键词、标题、分类、更新时间检索

表结构示例:

vbnet 复制代码
CREATE TABLE docs (
  id SERIAL PRIMARY KEY,
  title TEXT,
  path TEXT,
  category TEXT,
  content TEXT,
  updated_at TIMESTAMP
);

查询:

scss 复制代码
SELECT title, path, content
FROM docs
WHERE to_tsvector('simple', content) @@ plainto_tsquery('simple', 'SpeedPAK delivery')
LIMIT 10;

适合:

复制代码
文档几千篇
需要权限控制
需要 Web 管理后台
需要按分类、时间、部门过滤

大型知识库:全文检索 + 向量检索 + rerank

这才是比较完整的新式 RAG。

erlang 复制代码
用户问题
  ↓
query rewrite 查询改写
  ↓
关键词检索:BM25 / PostgreSQL FTS / Elasticsearch
  ↓
向量检索:pgvector / Milvus / Qdrant
  ↓
结果合并
  ↓
rerank 重新排序
  ↓
上下文压缩
  ↓
模型回答

这不是 RAG 过时,而是 RAG 变成了:

复制代码
结构化知识库 + 多路检索 + 上下文工程 + Agent 工具调用

复制代码
## 一个适合你的落地方案

你现在有几百篇知识文档,我建议别一上来就搞复杂向量库。可以这样做:

阶段 1:全部转 Markdown

目录:

markdown 复制代码
kb/
  ebay/
    shipping/
    listing/
    buyer-message/
  ai/
    rag/
    sdk/
  tech/
    docker/
    frontend/
  llms.txt
  llms-full.txt

每篇文档前面加元信息:

yaml 复制代码
---
title: SpeedPAK 派送异常处理
category: ebay/shipping
updated: 2026-05-02
tags: [SpeedPAK, out for delivery, last-mile, eBay]
---

# SpeedPAK 派送异常处理

## 场景

当物流显示 out for delivery 但长时间未更新......

## 处理方式

建议买家联系当地尾程派送商......

阶段 2:生成 llms.txt

markdown 复制代码
# Robin Knowledge Base

> Personal knowledge base for eBay selling, AI projects, programming, and content writing.

## eBay Seller

- [SpeedPAK 派送异常处理](./ebay/shipping/speedpak.md)
- [eBay 标题写法](./ebay/listing/title-guide.md)
- [买家议价回复模板](./ebay/buyer-message/offer-template.md)

## AI Project

- [RAG 知识库方案](./ai/rag/rag-architecture.md)
- [Agent 上下文压缩](./ai/agent/context-compression.md)

## Programming

- [Docker 安装 PostgreSQL](./tech/docker/postgresql.md)
- [Git Submodule 使用](./tech/git/submodule.md)

阶段 3:本地 grep 检索

arduino 复制代码
rg -n -C 4 "SpeedPAK|out for delivery|尾程|派送" kb/

阶段 4:做一个简单 Node.js 检索服务

javascript 复制代码
import { execFileSync } from "node:child_process";

function searchKb(query) {
  const result = execFileSync(
    "rg",
    ["-n", "-C", "4", query, "./kb", "-g", "*.md"],
    { encoding: "utf-8" }
  );

  return result;
}

const question = "SpeedPAK 显示 out for delivery 一直没更新怎么办?";

const keywords = "SpeedPAK|out for delivery|尾程|派送|物流";
const context = searchKb(keywords);

console.log(context);

然后把 context 拼进 prompt:

markdown 复制代码
你是知识库问答助手。只能基于下面资料回答。

用户问题:
SpeedPAK 显示 out for delivery 一直没更新怎么办?

检索资料:
{context}

请回答:
1. 原因
2. 建议处理方式
3. 可发送给买家的英文模板

复制代码
## Markdown / llms.txt / Wiki / RAG 对比
方案 本质 优点 缺点 适合你吗
grep Markdown 关键词搜索本地 md 文件 简单、便宜、透明 语义弱 很适合起步
llms.txt 给 AI 的文档目录 结构清晰,适合 Agent 不是检索引擎 建议做
llms-full.txt 全量 Markdown 合并 适合长上下文模型 大文档会浪费 token 小知识库可用
Wiki 知识管理系统 人能维护,AI 能同步 需要导出/清洗 适合团队
传统 RAG 向量检索 + 生成 能处理语义问题 容易召回错,成本高 后期再做
新式 RAG 全文 + 向量 + rerank + 压缩 效果最好 架构复杂 文档变多后做

复制代码
## 我的建议

你可以按这个路线走:

sql 复制代码
第一步:所有资料 Markdown 化
第二步:建立 kb/ 目录和 llms.txt
第三步:先用 rg 做关键词检索
第四步:接入 AI,让 AI 根据 grep 结果回答
第五步:文档超过几千篇后,再加 PostgreSQL full-text search
第六步:最后再加 pgvector 做语义检索

也就是:

perl 复制代码
不要一开始就重 RAG
先做 Markdown 知识库 + llms.txt + grep
再逐步升级成混合检索 RAG

一句话总结:

RAG 没过时,过时的是"只靠向量库乱搜"的 RAG。现在更好的方式是先把知识整理成 Markdown/Wiki/llms.txt,再用 grep、全文检索、向量检索组合起来。

相关推荐
财经资讯数据_灵砚智能1 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年5月9日
人工智能·python·信息可视化·自然语言处理·ai编程
DogDaoDao1 小时前
【GitHub】SuperClaude Framework深度解析:将Claude Code打造为专业开发平台的元编程配置框架
人工智能·深度学习·程序员·大模型·github·ai编程·claude
程序员鱼皮2 小时前
有人靠 API 中转站赚了上亿?我花 2 块钱做了一个。。
计算机·ai·程序员·编程·ai编程
YJlio2 小时前
2023-09-25:ChatGPT 从纯文本走向多模态交互,看、听、说能力意味着什么?
人工智能·chatgpt·aigc·多模态·语音交互·ai工具·图像理解
财经资讯数据_灵砚智能2 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年5月10日
人工智能·python·信息可视化·自然语言处理·ai编程
恋猫de小郭2 小时前
DeepSeek V4 Flash 可以在 128GB 的 M3 Max 运行,还是 1M 上下文
前端·人工智能·ai编程
奔跑的Ma~2 小时前
第三篇:Coze Skill核心模块详解——解锁个性化配置,提升Skill实用性
人工智能·学习·ai编程·skill·扣子
Cobyte2 小时前
大模型 MCP 本质原理:从协议到代码实现
前端·aigc·ai编程
lihaozecq3 小时前
从零实现一个 ReAct Agent Loop - 可中断、可流式、多模型支持
前端·agent·ai编程