【大模型】介绍什么是 ES 库和 ES 检索

【大模型】介绍什么是 ES 库和 ES 检索
  • ES 库:通常指 Elasticsearch 数据库,它不是传统数据库(如 MySQL),而是专门用于搜索、检索和分析海量文本数据
  • ES 检索:利用 Elasticsearch 的倒排索引和 BM25 等算法进行关键词全文检索。

  • 在 AI 知识库中:ES 负责精准关键词搜索,向量数据库负责语义搜索,两者结合形成当前主流的混合检索(Hybrid Search),兼顾准确性和语义理解能力。


为什么会有 ES?

假设有 1000 万篇文档。如果放在 MySQL 中:

SELECT * FROM article WHERE content LIKE '%人工智能%'

问题:非常慢、数据越多越慢、不支持智能搜索、排序能力差,而 ES 就是专门解决这个问题的。


ES 的本质

可以把 ES 看成:

Elasticsearch ┌──────────────────┐ │ 文档库 │ ├──────────────────┤ │ 建立倒排索引(Index)│ ├──────────────────┤ │ 全文搜索 │ │ 模糊搜索 │ │ 排序 │ │ 聚合分析 │ └──────────────────┘

它最核心的技术就是:倒排索引(Inverted Index)


什么是倒排索引?

例如有三篇文档:Doc1 今天学习人工智能;Doc2 今天学习Python;Doc3 人工智能发展很快

普通数据库保存的是:Doc1 -> 今天 学习 人工智能;Doc2 -> 今天 学习 Python;Doc3 -> 人工智能 发展 很快

ES 会建立一个反向索引:

今天 ├── Doc1 └── Doc2 学习 ├── Doc1 └── Doc2 人工智能 ├── Doc1 └── Doc3 Python └── Doc2 发展 └── Doc3

这样搜索人工智能;ES 根本不用扫描所有文档,直接找到 人工智能 ➡️ Doc1 Doc3,速度非常快。


ES 检索是什么?

就是在 Elasticsearch 中搜索数据。

例如:用户输入:LangChain 怎么调用工具?

ES 会:

① 分词 LangChain 调用 工具

② 去倒排索引找 LangChain ↓ Doc12 Doc56 Doc98

③ 算相关度 BM25

④ 返回最相关文档

这整个过程就是 ES 检索。


ES 能检索什么?

几乎任何文本:

PDF、Word、Markdown、网页、聊天记录、代码、日志(Log)、商品、新闻、论文、邮件

例如:

公司知识库 ↓ 100万份PDF ↓ 全部导入ES ↓ 员工输入: "年假怎么算" ↓ ES找到员工手册

ES 与 AI 知识库是什么关系?

现在的大模型知识库通常有两种检索方式。

AI知识库 │ ├──────────────┐ │ │ ES检索 向量检索 (BM25) (Embedding) │ │ └──────┬───────┘ 混合检索

第一种:ES(关键词检索)

例如:用户搜索 GPT-4 Turbo

ES 找:GPT 4 Turbo,匹配包含这些词的文档。优点是很快、很准(关键词完全一致)、成熟稳定;缺点是不会理解语义。

例如:汽车、机动车,ES 默认认为不是一个词。


第二种:向量检索(Vector Search)

把文字变成向量:

汽车 ↓ [0.21 0.53 0.88 ...]

机动车:

↓ [0.22 0.54 0.86 ...]

距离很近。因此:汽车≈机动车。

AI 能理解:同义词、近义词、语义,这就是 RAG 的核心。


为什么很多 AI 公司还要用 ES?

因为 ES 有很多向量数据库不擅长的能力。

例如:用户问:2024年的合同

ES 可以精准过滤:年份=2024

再比如:

文件类型=PDF 部门=法务 时间>2025 作者=张三

这些条件筛选,ES 做得非常成熟。


大模型知识库里的 ES

目前很多公司的架构是:

用户问题 │ ▼ Query Rewrite │ ┌──────────┴──────────┐ ▼ ▼ ES(BM25) Vector DB 关键词检索 语义检索 ▼ ▼ └──────────┬──────────┘ ▼ Hybrid Search ▼ Rerank(重排序) ▼ Top K ▼ LLM

这就是目前主流的RAG(检索增强生成)架构。