Retrieval:从信息检索到 RAG 核心引擎的深度技术解析

Summary

Retrieval 是 RAG(Retrieval-Augmented Generation)、AI Search、Enterprise Knowledge Base 和 Agent 系统中的核心环节。很多工程实践把 RAG 简化成“Embedding + Vector Database + LLM”,但真正决定 AI 应用回答质量的,往往不是 LLM 本身,而是 Retrieval 能否在海量、异构、动态变化的数据中,准确、高效、安全地找到真正有价值的信息

从技术本质上看,Retrieval 解决的是一个信息检索问题:

给定一个 Query,从大规模知识集合中召回最可能与 Query 相关的信息,并在有限的延迟、计算和 Context Window 内,为下游 LLM 提供最高价值的证据。

现代 Retrieval 已经从传统的 Keyword Search 演进到:

Keyword Retrieval
Semantic Retrieval
Hybrid Retrieval
Multi-Stage Retrieval
Reranking
Query Routing
Agentic Retrieval

本文从 Information Retrieval 的基本原理开始,深入讨论 BM25、Dense Retrieval、Embedding、ANN、Hybrid Search、Reranking、Query Expansion、Metadata Filtering、Multi-Query、Parent-Child Retrieval、Context Compression、Evaluation,以及生产级 Retrieval Architecture,并进一步分析 Retrieval 在 RAG 和 AI Agent 中的演进方向。


1. Retrieval 到底是什么?

Retrieval 的中文通常翻译为:

信息检索。

最简单的定义是:

Query
Retrieval System
Relevant Documents

例如用户输入:

如何解决 Java 应用的内存泄漏?

知识库中可能存在:

Document A:
Java Heap Dump Analysis

Document B:
JVM Memory Leak Troubleshooting

Document C:
Spring Boot Performance Tuning

Document D:
Kafka Consumer Optimization

Document E:
Redis Memory Management

Retrieval 的任务不是回答问题。

它的任务是:

找到:
A
B
C

然后将这些信息交给:

LLM

因此必须区分:

Retrieval ≠ Generation

Retrieval 负责:

Find Evidence

LLM 负责:

Generate Answer

2. Retrieval 为什么是 RAG 的核心?

一个典型 RAG:

User
Query
Retrieval
Relevant Context
LLM
Answer

如果 Retrieval 找错了:

Wrong Context
LLM
Wrong Answer

即使 LLM 本身能力非常强,也可能因为:

Missing Information
Irrelevant Information
Outdated Information
Unauthorized Information

而生成错误结果。

所以 RAG 的一个核心原则是:

Garbage In, Garbage Out。

对于 RAG:

Bad Retrieval
Bad Context
Bad Answer

因此:

Retrieval Quality 往往是 RAG Quality 的上限之一。


3. Retrieval 的数学抽象

假设知识库:

D = {d1, d2, d3, ..., dn}

用户 Query:

q

Retrieval 的目标是找到:

Top-K(d | q)

也就是:

根据 Query q,找到最相关的 K 个 Document。

可以抽象为:

score(q, d)

其中:

q = Query
d = Document

然后:

sort(score(q,d))

最终得到:

d1
d2
d3
...
dk

因此 Retrieval 的核心其实是:

Relevance Estimation。


4. Retrieval 的两个核心阶段

现代 Retrieval 通常可以拆成:

Candidate Retrieval
Candidate Ranking

也就是:

Recall
Precision

第一阶段:

尽可能找到所有可能相关的候选文档。

第二阶段:

从候选文档中挑选最相关的文档。

所以典型架构:

Query
Retriever
Top 50 / Top 100
Reranker
Top 5 / Top 10

这就是:

Multi-Stage Retrieval


5. 第一代 Retrieval:Keyword Search

最传统的信息检索方式是:

Keyword Search

例如:

Query:

Java memory leak

搜索系统寻找包含:

Java
memory
leak

的文档。

典型技术:

Inverted Index
TF-IDF
BM25

6. Inverted Index

传统搜索引擎通常不会每次扫描所有 Document。

例如:

Document 1:
Java Redis Kafka

Document 2:
Java Spring

Document 3:
Redis PostgreSQL

建立倒排索引:

Java
 ├── Doc1
 └── Doc2

Redis
 ├── Doc1
 └── Doc3

Kafka
 └── Doc1

Spring
 └── Doc2

查询:

Java Redis

可以快速定位:

Doc1
Doc2
Doc3

而不是扫描全部文档。

这就是:

Inverted Index。


7. TF-IDF

TF-IDF 是经典 Information Retrieval 方法。

TF:

Term Frequency

表示一个词在文档中出现的频率。

IDF:

Inverse Document Frequency

用于降低常见词的权重。

核心思想:

词在当前文档出现很多次
+
这个词在整个语料库中比较少见
=
这个词更加重要

例如:

the
is
and

在大量文档中都出现。

它们的信息量并不高。

而:

KafkaConsumer
OutOfMemoryError
RedisCluster

可能更有区分度。


8. BM25

BM25 是现代 Keyword Retrieval 中非常重要的 Ranking Function。

它解决的问题是:

一个词出现很多次,是不是意味着这个文档一定更相关?

答案并不是。

因此 BM25 对:

Term Frequency
Document Frequency
Document Length

进行综合计算。

可以抽象为:

BM25(Query, Document)

最终得到一个 relevance score。

BM25 的一个重要特点是:

对 Term Frequency 存在饱和效应。

也就是说:

第一次出现
价值很高

第二次出现
价值增加

出现 100 次
不会变成 100 倍重要

9. Keyword Retrieval 的优势

Keyword Search 并没有因为 Vector Search 出现而失去价值。

它特别适合:

Exact Match
Error Code
Product ID
Version
Class Name
API Name
File Name
Technical Term

例如:

Query:

ERR_CONNECTION_RESET

如果使用纯 Semantic Search:

“网络连接错误”

可能得到一些语义相近的信息。

但用户真正需要的是:

ERR_CONNECTION_RESET

对应的知识。

因此:

精确标识符通常应该保留 Keyword Retrieval。


10. Dense Retrieval

随着 Embedding 技术的发展,Retrieval 开始从:

Keyword Matching

进入:

Semantic Matching

Query:

如何降低 JVM 内存使用?

Document:

Techniques for reducing Java heap consumption

两者没有完全相同的关键词。

但是语义非常接近。

Dense Retrieval 的思想是:

Query
Embedding Model
Query Vector

Document:

Document
Embedding Model
Document Vector

然后:

Similarity(Query Vector, Document Vector)

11. Dense Retrieval 的核心

可以抽象为:

q → f(q)
d → f(d)

其中:

f()

是 Embedding Model。

然后:

score(q,d)
=
similarity(f(q), f(d))

常见:

Cosine Similarity
Dot Product
Euclidean Distance

这使得 Retrieval 从:

Lexical Matching

升级到:

Semantic Matching

12. Sparse Retrieval vs Dense Retrieval

两者可以这样理解:

特性Sparse RetrievalDense Retrieval
典型方法BM25Embedding
匹配方式KeywordSemantic
Exact Match
同义表达
技术术语视模型而定
未知词较差视模型
计算方式倒排索引Vector Search
典型系统ElasticsearchVector DB

因此二者并不是简单的替代关系。


13. Hybrid Retrieval

生产系统经常采用:

Keyword Retrieval
        +
Dense Retrieval

即:

Hybrid Retrieval

架构:

                   Query
            ┌────────┴────────┐
            ↓                 ↓
       BM25 Search       Vector Search
            ↓                 ↓
        Top 50              Top 50
            │                 │
            └────────┬────────┘
                Fusion
                  Top-K

这样可以同时利用:

Lexical Signal
+
Semantic Signal

14. 为什么 Hybrid Retrieval 很重要?

假设 Query:

Spring Boot 3.2.5 Actuator

Keyword Search:

能够准确匹配:

Spring
Boot
3.2.5
Actuator

Vector Search:

可能理解:

Spring Boot monitoring endpoint

二者结合:

Exact Match
+
Semantic Understanding

通常比任何一种单独 Retrieval 更鲁棒。


15. Retrieval Fusion

Hybrid Retrieval 必须解决:

BM25 Score 和 Vector Score 如何融合?

因为:

BM25 Score

和:

Cosine Similarity

并不一定处于相同的数值空间。

直接:

0.5 × BM25
+
0.5 × VectorScore

未必合理。

因此一种常见方法是:

RRF

Reciprocal Rank Fusion。

核心思想:

不直接比较原始 score,而比较排名。

例如:

BM25:

A
B
C
D

Vector:

B
C
A
E

根据 Rank 计算:

RRF Score

最终得到:

B
A
C
D
E

这样可以避免不同 Search Engine Score Scale 不一致的问题。


16. Retrieval 的真正难点:Recall

假设:

知识库中真正相关文档:

A B C D E

Retriever 返回:

A B C X Y

那么:

Recall@5 = 3 / 5

也就是:

60%

如果 Retriever 没有召回:

D
E

那么后面的 Reranker:

再强

也没有意义。

因此:

Reranker 只能重新排序已经召回的文档。

这意味着:

Retrieval Recall 是整个 Pipeline 的基础。


17. Recall 与 Precision

信息检索中两个非常重要的概念:

Recall
Precision

Recall:

所有相关文档中,我找到了多少?

Precision:

我找出来的文档中,有多少是真正相关的?

例如:

Relevant Documents = 10
Retrieved = 10
Relevant Retrieved = 8

那么:

Recall = 8 / 10
Precision = 8 / 10

在 RAG 中通常需要:

第一阶段:
Recall First

然后:

第二阶段:
Precision Optimization

18. 为什么需要 Reranker?

假设:

Retriever
Top 100

这些文档只是:

“可能相关”。

接下来需要一个更精确的模型重新判断:

Query
+
Document
Relevance Score

这就是:

Reranking


19. Bi-Encoder vs Cross-Encoder

Dense Retrieval 常见的是:

Bi-Encoder

Query:

q → Encoder → vector

Document:

d → Encoder → vector

然后比较:

vector(q)
vs
vector(d)

优势:

Fast
Scalable

因为 Document Vector 可以提前计算。


20. Cross-Encoder

Reranker 可以使用:

Query + Document
Cross Encoder
Relevance Score

例如:

Question:
如何解决 JVM 内存泄漏?

Document:
Java Heap Dump 可以用于分析对象引用链...

模型直接判断:

Relevance = 0.93

因为 Query 和 Document 同时输入模型:

Cross-Encoder

通常具有更高的相关性判断能力。

但代价是:

Query × Documents

需要大量模型计算。

所以:

Cross-Encoder 更适合 Reranking,而不是全库 Retrieval。


21. 两阶段 Retrieval

现代 RAG 常见架构:

                 Query
             Dense Retrieval
               Top 100
              Reranker
                Top 10
                 LLM

这实际上是一种:

Coarse Retrieval
Fine Ranking

也就是:

先快后精。


22. Query Understanding

很多 Retrieval 问题其实不是 Retriever 的问题。

而是:

Query 本身就不好。

例如:

“Kafka 不行了怎么办?”

这是一个非常模糊的 Query。

可能实际意思是:

Kafka Consumer Lag
Kafka Broker Failure
Kafka Producer Timeout
Kafka Rebalance
Kafka Partition

因此现代 Retrieval Pipeline 往往增加:

Query Understanding


23. Query Rewrite

LLM 可以把:

Kafka 不行了怎么办?

转换成:

Kafka consumer lag troubleshooting
Kafka broker availability
Kafka consumer rebalance
Kafka producer timeout

然后分别 Retrieval。

架构:

Original Query
Query Rewrite
Structured Query
Retriever

这样可以显著改善 Retrieval Quality。


24. Multi-Query Retrieval

对于复杂问题:

如何设计一个高并发订单系统?

可以生成多个 Query:

Q1:
high concurrency order system architecture

Q2:
distributed order processing

Q3:
inventory consistency

Q4:
order idempotency

Q5:
distributed transaction

分别 Retrieval:

Q1 → Docs
Q2 → Docs
Q3 → Docs
Q4 → Docs
Q5 → Docs

最后:

Merge
Deduplicate
Rerank

这种方法称为:

Multi-Query Retrieval


25. Query Expansion

另一种方法是:

Original Query
Synonym / Related Terms
Expanded Query

例如:

JVM memory leak

扩展:

Java heap leak
OutOfMemoryError
heap dump
memory retention
GC memory issue

这样可以提高:

Recall

特别是对于术语差异较大的知识库。


26. HyDE

另一个有趣的方法是:

Hypothetical Document Embeddings

简称:

HyDE

思路:

User Query
LLM
Hypothetical Answer
Embedding
Vector Search

例如用户:

什么是 JVM Metaspace?

先让 LLM 生成一个假想回答:

Metaspace is an area used by JVM to store class metadata...

然后对这个“假想文档”进行 Embedding。

这样 Query Vector 更接近真正的:

Knowledge Document

从而可能改善 Retrieval。


27. Metadata Filtering

Retrieval 不能只考虑:

Semantic Similarity

还需要:

Metadata

例如:

{
  "tenant": "enterprise-a",
  "department": "engineering",
  "year": 2026,
  "document_type": "architecture"
}

Query:

tenant = enterprise-a
AND department = engineering
AND year >= 2025

然后:

Semantic Search

这叫:

Filtered Retrieval


28. 为什么权限过滤必须进入 Retrieval?

假设:

User A

没有权限读取:

Salary.xlsx

如果流程是:

Vector Search
Top 10
Authorization Filter

可能出现:

Salary.xlsx

已经被 Retrieval 召回。

如果后续流程出现错误:

LLM Context

可能泄露敏感信息。

更安全的方式:

Authorization Filter
Candidate Space
Vector Retrieval

即:

Access Control 必须成为 Retrieval Constraint。


29. Parent-Child Retrieval

RAG 中经常遇到一个问题:

Retrieval 粒度与 Context 粒度并不一致。

例如一个章节:

Chapter
 ├── Section A
 ├── Section B
 ├── Section C
 └── Section D

Embedding 时:

Section A → Vector
Section B → Vector
Section C → Vector
Section D → Vector

如果 Query 命中:

Section B

最终给 LLM 的可能不是:

Section B

而是:

Parent Chapter

这就是:

Parent-Child Retrieval


30. 为什么 Parent-Child 有价值?

小 Chunk:

Retrieval Precision ↑

大 Chunk:

Context Completeness ↑

Parent-Child Retrieval 可以同时实现:

Small Chunk
Accurate Retrieval
Large Parent Context
LLM

因此它解决了:

Search Granularity 与 Context Granularity 的冲突。


31. Contextual Retrieval

普通 Chunk:

“它可以通过增加副本解决这个问题。”

如果单独 Embedding:

Context 不完整

因为:

指什么?

可以在 Chunk 前增加上下文:

Document:
Kafka Consumer Architecture

Section:
Consumer Scaling

Contextualized Chunk:
In Kafka Consumer Scaling, increasing the number
of consumer instances can improve throughput...

然后再 Embedding。

这样 Retrieval 更容易理解 Chunk 的语义。


32. Context Compression

假设:

Retriever
Top 20

每个 Chunk:

1,000 tokens

最终:

20,000 tokens

但是其中可能只有:

2,000 tokens

真正有价值。

因此可以:

Retrieved Documents
Context Compression
Relevant Sentences
LLM

这可以减少:

Token Cost
Context Noise
Latency

33. Retrieval 与 Context Window

LLM Context Window 越来越大,但:

Context Window 大,不代表应该把更多文档全部塞进去。

例如:

Top 100 Documents

即使 LLM 可以容纳:

100K tokens

也可能出现:

Context Dilution
Attention Competition
Noise
Cost

因此:

Retrieval 的目标不是最大化 Context,而是最大化 Context Utility。


34. Retrieval 的最终目标

因此一个优秀 Retrieval System 应该优化:

Relevant Information
        /
Latency + Cost + Context

而不是:

Retrieved Documents Count

35. Retrieval Evaluation

这是很多 RAG 项目最容易忽略的部分。

如果没有 Evaluation:

Retriever 改了
RAG 似乎更好了

但无法知道:

Recall 是否提高?
Precision 是否提高?
Latency 是否下降?

因此必须建立 Evaluation Dataset。


36. Retrieval Evaluation Dataset

可以构建:

Query
Relevant Documents
Relevant Chunk
Expected Answer

例如:

Query:
如何解决 Redis 热 Key?

Relevant:
doc-123
chunk-45

然后测试:

Top-1
Top-5
Top-10
Top-20

37. Retrieval Evaluation Metrics

重要指标包括:

Recall@K
Precision@K
MRR
NDCG
Hit Rate

38. Hit Rate

最简单:

Top-K

中是否包含至少一个正确文档。

例如:

Relevant:
A

Retrieved Top-5:
B C A D E

那么:

Hit@5 = 1

它适合快速判断:

Retrieval 是否至少找到了正确答案。


39. MRR

MRR:

Mean Reciprocal Rank

如果正确文档排名:

Rank 1

得分:

1

如果:

Rank 2

得分:

1/2

如果:

Rank 10

得分:

1/10

所以:

正确答案越靠前,MRR 越高。

它非常适合评估:

Ranking Quality

40. NDCG

NDCG 更适合:

多个相关文档
+
不同相关程度

例如:

Document A = Highly Relevant
Document B = Relevant
Document C = Slightly Relevant

NDCG 可以同时考虑:

Relevance
+
Ranking Position

因此在复杂 Retrieval Evaluation 中非常有价值。


41. Retrieval Evaluation 与 LLM Evaluation

应该区分:

Retrieval Evaluation

和:

Generation Evaluation

例如:

Question
Retriever
Documents
LLM
Answer

可以拆成:

Retriever:
Recall / Precision / NDCG

LLM:
Faithfulness
Correctness
Relevance

这样才能定位问题。

如果答案错误:

是 Retriever 找错了?

还是:

Retriever 找对了,
LLM 没有正确使用 Context?

42. Retrieval Failure Taxonomy

生产环境可以把 Retrieval Failure 分成几类。

1. Query Failure

用户 Query 本身不清晰。

“这个怎么解决?”

2. Index Failure

数据没有正确建立索引。

Document
Embedding Failure
Missing Vector

3. Chunk Failure

Chunk 切分错误:

Context 被拆散

4. Retrieval Failure

正确文档没有被召回。

Recall ↓

5. Ranking Failure

正确文档被召回,但是排名太低。

Recall OK
Precision / Ranking ↓

6. Context Failure

文档正确,但是上下文被截断。


7. Generation Failure

Retrieval 正确,LLM 仍然回答错误。


43. Retrieval Observability

生产环境必须能够看到:

Query
Query Rewrite
Embedding
Retriever
Candidates
Reranker
Final Context
LLM

因此应该记录:

query_id
tenant_id
query
retrieval_method
top_k
candidate_count
reranker_score
latency
documents

例如:

Retrieval Trace

Query: "Kafka consumer lag"
   
BM25:
  42 ms
  Top 50

Vector:
  18 ms
  Top 50

Fusion:
  3 ms

Reranker:
  86 ms

Final:
  Top 5

这样才能定位:

为什么 RAG 慢?

44. Retrieval Latency Budget

假设整个 API:

P95 < 2 seconds

可以设计:

Query Rewrite       150ms
Embedding            50ms
Keyword Search       50ms
Vector Search        30ms
Fusion               5ms
Reranker            200ms
LLM                1200ms
Network              100ms

总计:

≈ 1.785 seconds

这样才能进行真正的:

Retrieval Performance Engineering。


45. Retrieval Cache

对于高频 Query:

“什么是 Kubernetes?”

可能重复出现。

可以使用:

Query Cache
Embedding Cache
Retrieval Result Cache

例如:

Query
Normalize
Hash
Cache

但需要注意:

Knowledge Base 更新

以后:

Old Retrieval Result

可能失效。

因此 Cache 必须考虑:

TTL
Version
Knowledge Base Revision
Tenant
Permission

46. Retrieval 与数据新鲜度

企业知识库通常不断更新:

Document v1
Document v2
Document v3

如果 Retrieval 返回旧版本:

Outdated Context

LLM 可能生成:

Outdated Answer

因此 Retrieval 需要考虑:

Document Version
Updated At
Effective Date
Expiration

例如:

WHERE effective_from <= now()
AND effective_to > now()

47. Temporal Retrieval

有些问题具有时间语义:

2024 年公司的报销政策是什么?

和:

2026 年公司的报销政策是什么?

答案可能不同。

因此 Retrieval 不仅需要:

Semantic Similarity

还需要:

Temporal Filtering

即:

Query
Time Understanding
Metadata Filter
Retrieval

48. Retrieval Router

不同 Query 最适合不同 Retrieval Strategy。

例如:

“Redis Cluster 是什么?”

适合:

Vector Search

而:

“Redis 7.2.1 configuration”

可能适合:

Keyword Search

复杂问题:

“为什么 Redis Cluster 在网络分区下可能出现……”

可以:

Hybrid Search
+
Reranking

因此可以增加:

Retrieval Router

Query
Classifier / LLM
┌─────────────┬─────────────┬─────────────┐
│ Keyword     │ Vector      │ Hybrid      │
└─────────────┴─────────────┴─────────────┘

49. Agentic Retrieval

传统 RAG:

Question
Retrieve
Answer

Agentic Retrieval:

Question
Plan
Search
Analyze
Need More Information?
 ├── Yes → Search Again
 └── No
     Answer

例如:

“比较 Kafka、Pulsar 和 RabbitMQ 在高吞吐场景下的优缺点。”

Agent 可以拆成:

Query 1:
Kafka throughput

Query 2:
Pulsar architecture

Query 3:
RabbitMQ performance

Query 4:
Compare messaging semantics

然后:

Parallel Retrieval
Merge
Evidence Analysis
Answer

这标志着 Retrieval 从:

Static Search

向:

Dynamic Information Seeking

演进。


50. Graph Retrieval

并不是所有知识都适合纯 Vector Retrieval。

例如:

Employee
works_for
Company
owns
Project
uses
Technology

这种关系型知识更适合:

Knowledge Graph

因此未来 Retrieval 很可能变成:

                Query
          Retrieval Router
      ┌───────────┼───────────┐
      ↓           ↓           ↓
   Keyword     Vector       Graph
      ↓           ↓           ↓
      └───────────┼───────────┘
                Fusion
               Reranker
                Context
                  LLM

这就是:

Multi-Modal Retrieval Architecture

这里的“Multi-Modal”不仅可以指:

Text
Image
Audio

也可以理解为:

Keyword
Vector
Graph
Structured Data

多种 Retrieval Modality 的融合。


51. Retrieval 与 AI Agent Memory

AI Agent 需要记住:

Conversation
User Preferences
Previous Tasks
Knowledge
Tool Results

这些信息可以进入不同 Memory:

Short-Term Memory
Long-Term Memory
Episodic Memory
Semantic Memory

Retrieval 则负责:

当前任务
需要什么历史信息?
Retrieval
Memory

因此:

Retrieval 是 Agent Memory 被“取出来”的核心机制。


52. 一个成熟 Retrieval Architecture

综合前面的技术,可以得到一个生产级架构:

                           User Query
                       Query Understanding
                       ┌───────┴────────┐
                       ↓                ↓
                  Query Rewrite    Query Routing
                       │                │
                       └───────┬────────┘
                    ┌─────────────────────┐
                    │ Retrieval Layer     │
                    │                     │
                    │ BM25                │
                    │ Vector Search       │
                    │ Metadata Filter     │
                    │ Graph Retrieval     │
                    └──────────┬──────────┘
                         Candidate Set
                         Fusion / Merge
                           Reranker
                       Context Compression
                        Context Selection
                              LLM

这已经不是简单的:

Vector DB Search

而是完整的:

Retrieval System


53. Retrieval System 的五层架构

可以进一步抽象为五层。

Layer 1:Query Layer

负责:

Query Understanding
Query Rewrite
Query Expansion
Query Classification

Layer 2:Retrieval Layer

负责:

Keyword Retrieval
Dense Retrieval
Graph Retrieval
Structured Retrieval

Layer 3:Ranking Layer

负责:

Fusion
Reranking
Scoring
Deduplication

Layer 4:Context Layer

负责:

Context Selection
Compression
Ordering
Parent Retrieval
Token Budget

Layer 5:Evaluation & Observability

负责:

Recall
Precision
NDCG
Latency
Cost
Tracing
Quality Evaluation

54. Retrieval 的本质:Information Bottleneck

从架构角度看,LLM 的 Context Window 是有限的。

假设知识库:

10M documents

但 LLM 最终只能看到:

10 documents

那么 Retrieval 就成为一个:

Information Bottleneck。

它必须完成:

10M
1000
100
10

每一次压缩都会产生信息损失。

因此 Retrieval 真正解决的是:

如何在有限的信息预算中最大化有效信息密度。

这比单纯的:

“找到相似文档”

要深得多。


55. Retrieval 的核心 Trade-off

一个生产级 Retrieval System 永远存在以下权衡:

Recall
Precision

Latency
Quality

K
Context Noise

Freshness
Index Cost

Accuracy
Memory

Reranking Quality
Compute Cost

不存在一个:

Best Retrieval Algorithm

只有:

针对特定业务场景的最佳 Retrieval Architecture。


56. 从架构师角度重新理解 Retrieval

如果只会:

vector_db.search()

只能说明:

会调用 Retrieval API。

真正理解 Retrieval,需要能够回答:

为什么使用 BM25?

为什么使用 Vector Search?

为什么需要 Hybrid Search?

为什么 Retriever Top-100?

为什么 Reranker Top-10?

为什么需要 Query Rewrite?

为什么需要 Metadata Filter?

为什么需要 Parent-Child Retrieval?

为什么 Recall 比 Precision 更先优化?

为什么需要 Evaluation Dataset?

为什么 Retrieval Latency 会成为 RAG 性能瓶颈?

为什么权限必须进入 Retrieval?

为什么 Agent 需要 Iterative Retrieval?

当能够回答这些问题时,才真正进入:

Retrieval Architecture。


57. Retrieval 技术栈全景

可以把现代 Retrieval 技术体系总结成:

                    Retrieval
        ┌───────────────┼────────────────┐
        ↓               ↓                ↓
    Query           Retrieval         Ranking
  Processing          Engine           Engine
        │               │                │
        ↓               ↓                ↓
 Query Rewrite       BM25            RRF
 Query Expansion     Vector          Reranker
 Multi-Query         Hybrid          NDCG
 HyDE                Graph           Dedup
        │               │                │
        └───────────────┼────────────────┘
                 Context Management
                 Context Compression
                       LLM

58. 总结

Retrieval 是 AI 应用中连接:

Knowledge
LLM

的核心桥梁。

它经历了:

Keyword Search
BM25
Dense Retrieval
Vector Search
Hybrid Search
Reranking
Query Optimization
Multi-Stage Retrieval
Agentic Retrieval

一个成熟的 Retrieval Pipeline 通常是:

User Query
Query Understanding
Query Rewrite
Query Routing
┌───────────────────────┐
│ Keyword Retrieval     │
│ Vector Retrieval      │
│ Metadata Filtering    │
│ Graph Retrieval       │
└───────────┬───────────┘
       Candidate Set
       Fusion / Merge
         Reranker
     Context Compression
      Context Selection
            LLM

而 Retrieval 的最终目标不是:

找到最多的文档。

也不是:

找到最相似的向量。

而是:

在有限的延迟、计算、Token 和安全约束下,为下游模型提供最相关、最可靠、最新且用户有权限访问的信息。

因此,如果把现代 AI Application 抽象成:

AI Application
     Agent
     RAG
  Retrieval
┌─────┼──────┐
│     │      │
BM25 Vector Graph
│     │      │
└─────┼──────┘
   Reranker
   Context
     LLM

那么可以认为:

LLM 决定 AI 能不能“理解和生成”,而 Retrieval 决定 AI 能不能“找到正确的信息”。

这也是为什么在企业级 AI 系统中,Retrieval 正逐渐从一个简单的 Search Component,演变为独立的 Retrieval Engineering / Retrieval Architecture 领域。

Vincent zhai
Vincent zhai
Full-Stack Engineer