# 分享:搜索与RAG
- [一、只聊搜索](#%E4%B8%80%E3%80%81%E5%8F%AA%E8%81%8A%E6%90%9C%E7%B4%A2)
- [1.1 搜索的三种方式](#1.1%20%E6%90%9C%E7%B4%A2%E7%9A%84%E4%B8%89%E7%A7%8D%E6%96%B9%E5%BC%8F)
- [1.2 搜索的典型步骤](#1.2%20%E6%90%9C%E7%B4%A2%E7%9A%84%E5%85%B8%E5%9E%8B%E6%AD%A5%E9%AA%A4)
- [1.3 评价指标](#1.3%20%E8%AF%84%E4%BB%B7%E6%8C%87%E6%A0%87)
- [1.4 搜索引擎的历史](#1.4%20%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E%E7%9A%84%E5%8E%86%E5%8F%B2)
- [二、聊聊 RAG 和上下文工程](#%E4%BA%8C%E3%80%81%E8%81%8A%E8%81%8A%20RAG%20%E5%92%8C%E4%B8%8A%E4%B8%8B%E6%96%87%E5%B7%A5%E7%A8%8B)
- [三、Dify 中的概念抽象](#%E4%B8%89%E3%80%81Dify%20%E4%B8%AD%E7%9A%84%E6%A6%82%E5%BF%B5%E6%8A%BD%E8%B1%A1)
- [参考资料](#%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99)
## 一、只聊搜索
| 元数据 | 文本 | 向量 |
| ------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- |
| {"id": 1, "source": "user_input", "timestamp": "2024-03-15"} | 北京三日游可以这样安排:第一天上午游览天安门广场感受首都的庄严氛围,然后进入故宫博物院深度探索这座世界最大的古代宫殿建筑群,下午登上景山公园俯瞰故宫全景,傍晚在南锣鼓巷或什刹海体验老北京胡同文化并品尝地道小吃;第二天清晨前往八达岭长城或慕田峪长城感受"不到长城非好汉"的豪迈,下午返城后游览颐和园欣赏皇家园林的精致与大气,晚上可以去王府井大街购物或品尝北京烤鸭;第三天上午参观天坛公园观看当地人晨练并了解古代祭天文化,随后前往雍和宫感受藏传佛教的神秘氛围,下午游览北京胡同深处的恭王府体验王府文化,或者选择去798艺术区感受现代艺术气息,晚上在三里屯或簋街享用美食为旅程画上圆满句号,整个行程既能领略北京深厚的历史文化底蕴,又能体验现代都市的活力与魅力。 | `[0.23, -0.45, 0.67, 0.12, -0.89]` |
### 1.1 搜索的三种方式
1. [[元数据]]搜索/过滤、[[SQL]]
2. [[词袋模型]] 的关键词搜索,把文档看做一袋词
1. [[ElasticSearch、ES]]、[[BM25]]
2. **关键词搜索时代的[[百度贴吧]]**,[[概念 Concept]]、[[《俞军产品方法论》]]、[[李明远]]
3. [[向量检索、双塔模型(Bi-Encoder)]],本质是[[分布式语义]]
1. [[Word2Vec]] 让 [[embedding]] 真正普及开来 ([[CS224n Natural Language Processing]])
2. [[ANN]]、索引[[HNSW]]或者[[IVF]]
### 1.2 搜索的典型步骤
1. [[混合搜索、粗召回(粗排)]]
1. [[BM25]]
2. [[向量检索、双塔模型(Bi-Encoder)]]
2. [[RRF]],每个赛道取前几名
3. [[reranker 重排序]]
### 1.3 评价指标
| **查询类型** | **常用指标** | 关注啥 |
| ---------- | ------------------------------------- | ------------------- |
| | [[准确率、召回率]] | |
| 导航查询 (单答案) | [[MRR(Mean Reciprocal Rank)- 平均倒数排名]] | 只看第一个正确答案在哪 |
| 推荐系统 | [[NDCG]] | 考虑所有结果的相关性程度(0-4分) |
| 问答系统 | [[MRR(Mean Reciprocal Rank)- 平均倒数排名]] | 考虑所有正确答案的位置(二元:对/错) |
| 信息检索 (多答案) | [[MAP@k]] + [[NDCG]] | |
| 电商搜索 | [[MAP@k]] + [[业务指标]] | |
### 1.4 搜索引擎的历史
[[搜索引擎]]的历史
## 二、聊聊 RAG 和上下文工程
1. [[RAG]]
```
召回阶段: 向量搜索/BM25 → 候选 Top100
↓
重排阶段: Qwen Rerank → 精排 Top10
↓
生成阶段: 送入 LLM 生成答案
```
2. [[上下文工程 Context Engineering]]
## 三、Dify 中的概念抽象
https://docs.dify.ai/zh/use-dify/knowledge/readme

## 参考资料
1. 一篇[[RAG]]文章:《37 Things I Learned About Information Retrieval in Two Years at a Vector Database Company》
1. 英文:https://www.leoniemonigatti.com/blog/what_i_learned.html
2. 翻译:https://www.sohu.com/a/910455786_122189055
2. 两个视频:[[王树森]] 的、
