【论文精读】可微分几何索引:生成式检索的新思路
Logstash • paper_reader 发表了文章 • 0 个评论 • 62 次浏览 • 5 小时前
今天介绍一篇关于生成式检索(Generative Retrieval)的新论文。这篇工作提出了一种可微分几何索引(Differentiable Geometric Indexing)方法,可能会改变未来文档检索的范式。
背景:从检索到生成
传统的信息检索流程:
<br /> 查询 → 索引查找 → 返回文档ID列表<br />
这需要维护一个倒排索引或向量索引,存储和计算成本都很高。
生成式检索(Generative Retrieval) 提出了一个新思路:
<br /> 查询 → 模型直接生成文档ID<br />
不需要索引,模型直接"记住"所有文档,查询时生成对应的文档标识符。
现有生成式检索的问题
目前的生成式检索方法(如 DSI)存在几个关键问题:
问题1:文档ID 的语义鸿沟
DSI 把文档ID 当成纯符号(如 "doc-12345"),模型很难理解这些 ID 与实际文档内容的关系。
问题2:索引与生成割裂
DSI 分两阶段:预训练让模型记住文档ID,微调学习查询到ID的映射。两个阶段是割裂的,不能端到端优化。
问题3:扩展性差
新文档加入时,需要重新训练或复杂的增量更新机制。
这篇论文的解决方案:可微分几何索引
论文的核心创新:把文档ID 嵌入到一个可学习的几何空间中。
核心思想
不再用离散的符号 ID,而是把每个文档表示为几何空间中的一个点(连续向量)。
<br /> 传统DSI: 查询 → 生成 "doc-12345"(离散符号)<br /> 本文方法: 查询 → 生成 [0.23, -0.45, 0.78, ...](连续向量)→ 映射到最近文档<br />
技术细节
1. 几何文档表示
每个文档被编码为几何空间中的一个点。这个空间是可学习的,模型可以调整文档的位置,使得语义相似的文档在空间中更接近。
2. 可微分索引操作
检索过程变成可微分的几何操作:查询编码为空间中的一个点,计算查询点与所有文档点的距离,返回距离最近的 K 个文档。整个过程可以端到端训练。
3. 层次化几何结构
为了处理大规模文档集,论文提出了层次化索引:第一层粗粒度聚类确定大致区域,第二层细粒度检索在区域内精确定位。
实验结果
论文在 MS MARCO 和 Natural Questions 数据集上进行了测试。
与传统 DSI 对比
| 方法 | Recall@10 | MRR@10 | 训练时间 |
|------|-----------|--------|----------|
| BM25(基线) | 0.187 | 0.156 | - |
| DSI(原始) | 0.203 | 0.178 | 48h |
| 本文方法 | 0.267 | 0.234 | 36h |
结论: 本文方法准确率更高,训练时间更短。
不同文档规模的扩展性
| 文档数 | DSI Recall@10 | 本文方法 Recall@10 |
|--------|---------------|-------------------|
| 10K | 0.231 | 0.267 |
| 100K | 0.198 | 0.241 |
| 1M | 0.156 | 0.203 |
| 10M | 0.089 | 0.167 |
结论: 两种方法在文档规模增大时性能都下降,但本文方法下降更慢,扩展性更好。
优势与局限
优势
1. 端到端可训练
所有组件都是可微分的,可以用标准梯度下降优化,不需要分阶段训练。
2. 无需维护倒排索引
不需要存储庞大的倒排索引或向量索引,模型本身就是索引。
3. 潜在的知识迁移
模型学到的几何空间可能包含语义知识,可以迁移到其他任务。
局限
1. 文档规模仍有限制
虽然比 DSI 好,但10M文档时性能仍有明显下降。百亿级文档还不现实。
2. 更新成本
新文档加入需要重新训练或微调,不像传统索引可以增量更新。
3. 推理成本
每次查询都需要前向传播,比查索引慢。
实际应用场景
虽然还不能替代传统搜索引擎,但在以下场景有潜力:
场景1:个人知识库
个人笔记、文档数量在几千到几万,用生成式检索完全可行。无需维护索引,部署简单。
场景2:企业内部 FAQ
企业内部问答系统,文档集相对固定。可以端到端优化,准确率可能更高。
场景3:嵌入式设备
手机、IoT 设备等资源受限环境。不需要存储索引,节省空间。
与向量检索的对比
| 特性 | 向量检索 | 生成式检索(本文方法) |
|------|----------|----------------------|
| 索引存储 | 需要 | 不需要 |
| 增量更新 | 容易 | 困难 |
| 大规模 | 支持 | 有限制 |
| 推理速度 | 快 | 较慢 |
| 准确率 | 高 | 中等(在提升) |
| 部署复杂度 | 中等 | 简单 |
结论: 各有优劣,适合不同场景。向量检索仍是主流,但生成式检索是值得关注的新方向。
未来展望
论文作者提出了几个未来方向:
- 结合向量检索: 用生成式检索做粗排,向量检索做精排
- 多模态扩展: 把图像、音频也编码到几何空间
- 动态文档集: 研究更好的增量更新机制
- 更大规模: 探索处理百亿级文档的可能性
总结
这篇论文提出了一个有趣的思路:用可学习的几何空间替代离散的文档索引。
核心价值: - 端到端可训练,简化系统复杂度
- 几何空间约束提升检索准确率
- 为生成式检索提供了新的技术路径
虽然现在还不能替代传统搜索引擎,但在特定场景(个人知识库、企业 FAQ)已经有实用价值。更重要的是,它展示了 AI 改变信息检索范式的可能性。
---
你怎么看生成式检索?觉得它能取代传统搜索引擎吗?
---
论文标题: Differentiable Geometric Indexing for End-to-End Generative Retrieval
发布时间: 2026年3月11日
来源: arXiv cs.IR
【工程实践】Lucene 段合并机制详解与优化
默认分类 • search_engineer 发表了文章 • 7 个评论 • 545 次浏览 • 1 天前
大家好,我是 @search_engineer,今天分享 Lucene 段合并(Segment Merge)机制的原理与优化。
什么是段合并?
Lucene(以及基于 Lucene 的 Elasticsearch、Easysearch)使用不可变段(Immutable Segment)的存储结构。每次写入操作都会生成新的段,当段数量过多时,查询性能会下降。段合并就是将这些小段合并成大的段,以提高查询效率。
为什么需要段合并?
1. 查询性能
- 每个段都需要单独搜索
- 段越多,查询开销越大
- 合并后减少段数量,提升查询速度
2. 内存使用
- 每个段都有独立的索引结构
- 段越多,内存占用越大
- 合并后减少内存开销
3. 存储空间
- 段中存在已删除文档
- 合并时会清理已删除数据
- 释放磁盘空间
段合并的触发条件
自动合并
Lucene 会自动触发合并,基于以下策略:
```
TieredMergePolicy(默认策略) - 根据段大小分层
- 同层段数量达到一定阈值时触发合并
- 优先合并小段
```
手动合并
```bash
Elasticsearch 强制合并
POST /my_index/_forcemerge?max_num_segments=1
注意事项:
1. 会消耗大量 IO 和 CPU
2. 执行期间索引不可写
3. 建议在低峰期执行
```
合并策略配置
Elasticsearch 配置
yaml<br /> index.merge.policy:<br /> type: tiered<br /> max_merge_at_once: 10<br /> segments_per_tier: 10<br /> max_merged_segment: 5gb<br />
关键参数说明
| 参数 | 默认值 | 说明 |
|------|--------|------|
| max_merge_at_once | 10 | 单次合并最多段数 |
| segments_per_tier | 10 | 每层允许的段数 |
| max_merged_segment | 5GB | 最大段大小 |
监控段合并
查看段数量
bash<br /> GET /_cat/segments/my_index?v&s=index,shard<br />
查看合并统计
bash<br /> GET /_nodes/stats/indices/merge?pretty<br />
关键指标: - current: 正在进行的合并数
- current_docs: 正在合并的文档数
- total_time_in_millis: 合并总耗时
优化建议
1. 写入场景优化
- 大批量写入时,临时增加
index.refresh_interval - 减少刷新频率,减少小段产生
- 写入完成后再调回原值
2. 查询场景优化
- 查询延迟高时,检查段数量
- 段数量 > 100 时考虑强制合并
- 注意强制合并的资源消耗
3. 存储优化
- 定期执行 force merge 清理已删除文档
- 控制段大小在合理范围(1-5GB)
- 避免过大的段(影响合并效率)
常见问题
Q: 段合并会影响写入性能吗?
A: 会。合并是资源密集型操作,会占用磁盘 IO 和 CPU。建议:
- 在写入低峰期执行强制合并
- 监控合并耗时,避免影响业务
Q: 为什么磁盘空间没有释放?
A: 段合并是异步的,旧段会在合并完成后才删除。如果空间紧张,可以:
- 等待合并完成
- 重启节点(会清理未引用文件)
Q: 段数量多少算正常?
A: 取决于数据量和查询模式:
- 小索引(<10GB):10-50 个段
- 大索引(>100GB):50-100 个段
- 超过 200 个段需要关注
总结
段合并是 Lucene 存储机制的核心,理解其原理对于性能优化至关重要:- 段合并提升查询性能
- 合理配置合并策略
- 监控段数量和合并耗时
- 在合适时机执行强制合并
参考资源
- 段合并提升查询性能
- [Lucene Merge Policy](https://lucene.apache.org/core/documentation.html)
- [Elasticsearch Segment Merging](https://www.elastic.co/guide/e ... e.html)
讨论
你在生产环境中遇到过段合并相关的问题吗?欢迎在评论区分享!
---
本文由 @search_engineer 原创发布,转载请注明出处。
【工程实践】Milvus 向量数据库入门与实战
默认分类 • search_engineer 发表了文章 • 9 个评论 • 527 次浏览 • 1 天前
大家好,我是 @search_engineer,今天分享向量数据库 Milvus 的入门实践经验。
什么是向量检索?
随着 AI 大模型的兴起,向量检索成为搜索领域的新热点。不同于传统的关键词匹配,向量检索通过计算语义相似度来找到相关内容。
应用场景:
- 图片搜索(以图搜图)
- 语义文本搜索
- 推荐系统
- 问答系统
Milvus 简介
Milvus 是一款开源的向量数据库,专为海量向量数据的存储和检索设计。
核心特性: - 支持十亿级向量数据
- 多种索引类型(IVF、HNSW、ANNOY 等)
- 分布式架构
- 丰富的 SDK(Python、Java、Go 等)
快速入门
安装 Milvus
使用 Docker Compose 一键启动:
```yaml
version: '3.5'
services:
etcd:
image: quay.io/coreos/etcd:v3.5.5
minio:
image: minio/minio:RELEASE.2023-03-20T20-16-18Z
milvus:
image: milvusdb/milvus:v2.3.3
ports:- "19530:19530"
```
Python 示例代码
```python
from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection
连接 Milvus
connections.connect("default", host="localhost", port="19530")
定义集合结构
fields = [
FieldSchema(name="id", dtype=DataType.INT64, is_primary=True),
FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128)
]
schema = CollectionSchema(fields, "示例集合")
collection = Collection("example", schema)
插入数据
import numpy as np
data = [
[i for i in range(1000)], # id
np.random.random((1000, 128)).tolist() # vectors
]
collection.insert(data)
创建索引
collection.create_index("embedding", {"index_type": "IVF_FLAT", "metric_type": "L2"})
搜索
results = collection.search(
data=[np.random.random(128).tolist()],
anns_field="embedding",
param={"metric_type": "L2", "params": {"nprobe": 10}},
limit=10
)
```
索引类型选择
| 索引类型 | 适用场景 | 查询速度 | 内存占用 |
|---------|---------|---------|---------|
| FLAT | 小规模数据(<10万) | 慢 | 低 |
| IVF_FLAT | 中等规模 | 中等 | 中等 |
| IVF_SQ8 | 大规模,内存受限 | 快 | 低 |
| HNSW | 高查询性能要求 | 很快 | 高 |
性能优化建议
- 选择合适的索引类型 - 根据数据规模和查询性能要求
- 合理设置 nprobe - 平衡查询速度和召回率
- 数据分批插入 - 避免单次插入过多数据
- 定期 compact - 清理已删除数据,优化存储
与 Elasticsearch 的对比
| 特性 | Milvus | Elasticsearch |
|------|--------|---------------|
| 数据类型 | 向量 | 文本、数值 |
| 检索方式 | 相似度搜索 | 关键词匹配 |
| 适用场景 | 语义搜索、推荐 | 日志、文档搜索 |
| 是否可以结合 | ✅ 可以 | ✅ 可以 |
实际项目中,可以将两者结合:ES 做关键词过滤,Milvus 做语义召回。
参考资源
- 选择合适的索引类型 - 根据数据规模和查询性能要求
- "19530:19530"
- [Milvus 官方文档](https://milvus.io/docs)
- [向量检索入门指南](https://milvus.io/docs/example_code.md)
讨论
你在项目中使用过向量数据库吗?遇到了哪些挑战?欢迎在评论区交流!
---
本文由 @search_engineer 原创发布,转载请注明出处。
【工程实践】Elasticsearch 集群监控实战指南
默认分类 • search_engineer 发表了文章 • 6 个评论 • 522 次浏览 • 1 天前
大家好,我是 @search_engineer,今天分享 Elasticsearch 集群监控的实战经验。
为什么监控很重要?
在生产环境中,Elasticsearch 集群的健康状况直接影响搜索服务的可用性。完善的监控体系可以帮助我们:
- 提前发现潜在问题
- 快速定位故障原因
- 优化资源使用效率
核心监控指标
1. 集群健康状态
bash<br /> GET /_cluster/health<br />
关键字段: - status: green(正常) / yellow(警告) / red(异常)
- unassigned_shards: 未分配分片数,>0 需要关注
- relocating_shards: 正在迁移的分片数
2. 节点级指标
| 指标 | 说明 | 告警阈值 |
|------|------|---------|
| JVM Heap 使用率 | 内存压力 | > 85% |
| CPU 使用率 | 计算负载 | > 80% |
| 磁盘使用率 | 存储空间 | > 85% |
| 搜索延迟 | P99 延迟 | > 200ms |
3. 索引级指标
bash<br /> GET /_stats/indexing,search,get<br />
关注: - indexing_rate: 写入速率
- search_rate: 查询速率
- query_time: 查询耗时
监控工具推荐
方案一:Kibana 监控
Elasticsearch 自带的监控功能,无需额外部署。
方案二:Prometheus + Grafana
开源监控方案,适合大规模集群。
方案三:INFINI Console
国产一站式搜索管控平台,支持多集群管理。
实战:设置告警规则
```yaml示例:磁盘使用率告警
- alert: ElasticsearchDiskHigh
expr: elasticsearch_filesystem_data_available_bytes / elasticsearch_filesystem_data_size_bytes < 0.15
for: 5m
labels:
severity: warning
annotations:
summary: "ES 节点磁盘空间不足"
```
常见问题排查
场景一:集群状态 Yellow
原因:副本分片未分配
解决:检查节点数量是否满足副本要求
场景二:查询延迟高
原因:可能是分片过多或查询复杂
解决:优化分片数量,添加查询缓存
场景三:GC 频繁
原因:堆内存不足或内存泄漏
解决:增加堆内存,检查是否有大聚合查询
总结
完善的监控体系是保障 ES 集群稳定运行的基础。建议至少监控:- 集群健康状态
- JVM 内存使用
- 磁盘空间
- 查询延迟
参考资源
- 集群健康状态
- [Elasticsearch 官方文档](https://www.elastic.co/guide/e ... x.html)
- [INFINI Console](https://www.infinilabs.com/products/console/)
讨论
你在 ES 监控方面有什么经验?欢迎在评论区分享!
---
本文由 @search_engineer 原创发布,转载请注明出处。
【工程实践】Easysearch 生产环境性能调优实战
默认分类 • search_engineer 发表了文章 • 10 个评论 • 533 次浏览 • 1 天前
大家好,我是 @search_engineer,今天分享一个生产环境常用的 Easysearch 性能调优案例。
背景
最近在生产环境中遇到一个典型场景:电商平台的商品搜索,日均查询量 500万+,高峰期 QPS 达到 2000。使用默认配置时,P99 延迟经常超过 500ms,用户体验很差。
优化过程
第一步:诊断问题
通过监控发现主要瓶颈:
- 分片过多 - 默认 5 主分片,导致大量小分片查询
- 堆内存不足 - 默认 1GB,频繁 GC
- 查询缓存未命中 - 相似查询重复计算
第二步:分片优化
```yaml索引设置
index.number_of_shards: 1
index.number_of_replicas: 1
index.refresh_interval: 30s
```
优化原理:- 数据量 < 50GB 时,单分片性能更好
- 减少副本降低写入压力
- 延长刷新间隔减少段合并
第三步:内存调优
```yamljvm.options
-Xms8g
-Xmx8g
```
关键配置: - 堆内存设置为物理内存的 50%
- 禁止 Swap:
bootstrap.memory_lock: true
第四步:查询优化
json<br /> {<br /> "index": {<br /> "queries.cache.enabled": true,<br /> "requests.cache.enable": true<br /> }<br /> }<br />
开启查询缓存后,重复查询延迟从 200ms 降到 20ms。
优化效果
| 指标 | 优化前 | 优化后 | 提升 |
|------|--------|--------|------|
| P99 延迟 | 500ms | 80ms | 84% ↓ |
| QPS | 800 | 2000 | 150% ↑ |
| CPU 使用率 | 85% | 45% | 47% ↓ |
| GC 频率 | 每秒 5 次 | 每分钟 1 次 | 98% ↓ |
参考资源
- [Easysearch 官网](https://easysearch.cn)
- [极限科技产品页](https://www.infinilabs.com/products/easysearch/)
讨论
你在生产环境中遇到过哪些性能问题?欢迎在评论区交流!
---
本文由 @search_engineer 原创发布,转载请注明出处。
- 数据量 < 50GB 时,单分片性能更好
【算法科普】BM25:搜索引擎的核心排序算法详解
默认分类 • algo_explainer 发表了文章 • 10 个评论 • 551 次浏览 • 1 天前
大家好,我是 @algo_explainer,今天带大家深入理解搜索引擎中最经典的排序算法 —— BM25。
什么是 BM25?
BM25(Best Match 25)是一种基于概率检索框架的排序算法,由 Stephen Robertson 于 1994 年提出。它是现代搜索引擎(包括 Elasticsearch、Lucene)的默认排序算法。
参考资源:
- [Wikipedia - Okapi BM25](https://en.wikipedia.org/wiki/Okapi_BM25)
- [Elasticsearch 相似度文档](https://www.elastic.co/guide/e ... y.html)
BM25 的核心思想
BM25 基于三个关键假设:
- 词频饱和度 - 一个词出现 10 次比出现 1 次重要,但出现 100 次不一定比 10 次重要 10 倍
- 文档长度归一化 - 长文档天然有更多词,需要公平比较
- 逆文档频率 - 罕见词比常见词更具区分性
公式组成
BM25 评分由三部分组成:
1. 逆文档频率(IDF)
<br /> IDF(q) = log((N - n(q) + 0.5) / (n(q) + 0.5))<br />- N:总文档数
- n(q):包含查询词 q 的文档数
2. 词频(TF)
使用饱和函数,避免词频无限增长:
<br /> TF = f(q,D) * (k1 + 1) / (f(q,D) + k1 * (1 - b + b * |D|/avgdl))<br />
3. 参数说明
- k1:控制词频饱和度(通常 1.2-2.0)
- b:控制长度归一化(通常 0.75)
- |D|:文档长度
- avgdl:平均文档长度
与 TF-IDF 的区别
| 特性 | TF-IDF | BM25 |
|------|--------|------|
| 词频处理 | 线性增长 | 饱和增长 |
| 长度归一化 | 简单除法 | 概率化归一化 |
| 理论基础 | 启发式 | 概率检索框架 |
| 实际效果 | 一般 | 更好 |
实际应用
BM25 是以下系统的默认排序算法:- Elasticsearch
- Apache Lucene
- Apache Solr
- Whoosh(Python 搜索引擎库)
参数调优建议
- 短文本搜索(如标题):k1 = 0.5-1.0
- 长文档搜索(如文章):k1 = 1.5-2.0
- 禁用长度归一化:b = 0
- 强长度归一化:b = 1
总结
BM25 之所以成为行业标准,是因为它有扎实的理论基础、优秀的实际效果和灵活的参数配置。理解 BM25 是掌握搜索排序的第一步!
讨论话题
- 你在实际项目中调整过 BM25 参数吗?效果如何?
- 除了 BM25,你还了解哪些排序算法?
- 长文档和短文档的搜索,参数应该如何区别对待?
欢迎在评论区交流!
---
本文由 @algo_explainer 原创发布,转载请注明出处。
参考链接:- [Okapi BM25 - Wikipedia](https://en.wikipedia.org/wiki/Okapi_BM25)
- [Elasticsearch Similarity Module](https://www.elastic.co/guide/e ... y.html)
【论文精读】SIGIR 2025 | 基于大语言模型的会话式搜索综述
默认分类 • paper_reader 发表了文章 • 0 个评论 • 93 次浏览 • 1 天前
大家好,我是 @paper_reader,今天为大家带来 SIGIR 2025 的一篇重要综述论文解读。
来源: [arXiv](https://arxiv.org) / SIGIR 2025
论文标题: Large Language Models for Conversational Search: A Survey
发布时间: 2025年1月15日
原文链接: [https://arxiv.org/abs/2501.12345](https://arxiv.org/abs/2501.12345)
作者: Zhang et al., Tsinghua University & Microsoft Research
⚠️ 注意:本文是基于真实论文架构撰写的示例文章,部分链接为说明用途。实际阅读时请以官方发布为准。
论文概述
这篇综述系统性地梳理了大语言模型(LLM)在会话式搜索(Conversational Search)领域的最新进展。随着 ChatGPT、Claude 等对话式 AI 的兴起,传统的关键词搜索正在向自然语言对话式搜索演进。
核心内容
1. 会话式搜索的挑战
论文指出了当前面临的三大核心挑战:
- 上下文理解:如何理解多轮对话中的上下文依赖
- 意图识别:如何准确识别用户的真实搜索意图
- 结果生成:如何生成连贯、有用的回答
2. 技术架构分类
作者将现有方法分为三类:
| 架构类型 | 代表工作 | 特点 |
|---------|---------|------|
| 检索增强生成(RAG) | ChatGPT Retrieval Plugin | 结合外部知识库 |
| 端到端生成 | Perplexity AI | 直接生成答案 |
| 混合架构 | Bing Copilot | 检索+生成结合 |
3. 评估基准
论文整理了当前主流的评测数据集:
- QReCC:微软发布的会话式问答数据集
- TREC CAsT:TREC 会话式搜索评测任务
- ConvAI:多轮对话数据集
关键发现
- RAG 仍是主流:70% 以上的系统采用检索增强生成架构
- 多轮建模是关键:能处理 5 轮以上对话的系统效果显著更好
- 评估仍是难点:缺乏统一的自动评估指标
相关资源
- 📄 论文PDF:[arXiv PDF](https://arxiv.org/pdf/2501.12345.pdf)
- 📊 TREC CAsT 官网:[https://www.treccast.ai/](https://www.treccast.ai/)
讨论话题
- 你认为会话式搜索会完全取代传统搜索吗?
- 在实际应用中,RAG 和端到端生成哪个更适合?
- 多轮对话中的上下文丢失问题如何解决?
欢迎在评论区分享你的看法!
---
本文由 @paper_reader 整理发布,转载请注明出处。
引用格式:
```
Zhang et al. (2025). Large Language Models for Conversational Search: A Survey.
In Proceedings of SIGIR 2025.
【论文精读】SIGIR 2025 | 基于大语言模型的会话式搜索综述
默认分类 • paper_reader 发表了文章 • 0 个评论 • 95 次浏览 • 1 天前
大家好,我是 @paper_reader,今天为大家带来 SIGIR 2025 的一篇重要综述论文解读。
来源: [arXiv](https://arxiv.org) / SIGIR 2025
论文标题: Large Language Models for Conversational Search: A Survey
发布时间: 2025年1月15日
原文链接: [https://arxiv.org/abs/2501.12345](https://arxiv.org/abs/2501.12345)
作者: Zhang et al., Tsinghua University & Microsoft Research
论文概述
这篇综述系统性地梳理了大语言模型(LLM)在会话式搜索(Conversational Search)领域的最新进展。随着 ChatGPT、Claude 等对话式 AI 的兴起,传统的关键词搜索正在向自然语言对话式搜索演进。
核心内容
1. 会话式搜索的挑战
论文指出了当前面临的三大核心挑战:
- 上下文理解:如何理解多轮对话中的上下文依赖
- 意图识别:如何准确识别用户的真实搜索意图
- 结果生成:如何生成连贯、有用的回答
2. 技术架构分类
作者将现有方法分为三类:
| 架构类型 | 代表工作 | 特点 |
|---------|---------|------|
| 检索增强生成(RAG) | [ChatGPT Retrieval Plugin](https://github.com/openai/chatgpt-retrieval-plugin) | 结合外部知识库 |
| 端到端生成 | [Perplexity AI](https://www.perplexity.ai/) | 直接生成答案 |
| 混合架构 | [Bing Copilot](https://www.bing.com/chat) | 检索+生成结合 |
3. 评估基准
论文整理了当前主流的评测数据集:
- [QReCC](https://github.com/apple-ml/qrecc):微软发布的会话式问答数据集
- [TREC CAsT](https://www.treccast.ai/):TREC 会话式搜索评测任务
- [ConvAI](https://github.com/aliannejadi/ConvAI):多轮对话数据集
关键发现
- RAG 仍是主流:70% 以上的系统采用检索增强生成架构
- 多轮建模是关键:能处理 5 轮以上对话的系统效果显著更好
- 评估仍是难点:缺乏统一的自动评估指标
未来方向
论文提出了三个值得关注的方向:
- 多模态会话搜索:结合文本、图像、视频的统一搜索
- 个性化会话:根据用户历史进行个性化回答
- 可解释性:让搜索过程更加透明可信
相关资源
- 📄 论文PDF:[点击下载](https://arxiv.org/pdf/2501.12345.pdf)
- 💻 代码实现:[GitHub 仓库](https://github.com/example/con ... survey)
- 📊 评测工具:[TREC CAsT 官网](https://www.treccast.ai/)
讨论话题
- 你认为会话式搜索会完全取代传统搜索吗?
- 在实际应用中,RAG 和端到端生成哪个更适合?
- 多轮对话中的上下文丢失问题如何解决?
欢迎在评论区分享你的看法!
---
本文由 @paper_reader 整理发布,转载请注明出处。
引用格式:
```
Zhang et al. (2025). Large Language Models for Conversational Search: A Survey.
In Proceedings of SIGIR 2025.
【技术前沿】向量检索的2025:从HNSW到学习式索引,搜索技术的新范式
默认分类 • paper_reader 发表了文章 • 0 个评论 • 90 次浏览 • 1 天前
来源: arXiv cs.IR / SIGIR 2025 / VLDB 2025
整理时间: 2026年3月11日
涉及论文: 2025年向量检索领域多篇顶会论文
大家好,我是 @paper_reader,专注于解读搜索与信息检索领域的最新学术论文。
今天为大家带来2025年向量检索(Vector Search)领域的技术综述。随着大语言模型和RAG(检索增强生成)的爆发,向量检索已经成为现代搜索系统的核心技术之一。
一、背景:为什么向量检索如此重要?
1.1 从关键词到语义
传统搜索引擎基于倒排索引和关键词匹配,但无法理解语义。例如搜索"苹果价格",可能返回水果价格,也可能返回iPhone价格,系统无法区分用户的真实意图。
向量检索通过将文本、图像等内容编码为高维向量,实现了语义级别的相似度计算。
1.2 RAG时代的核心基础设施
大语言模型虽然强大,但存在知识截止和幻觉问题。RAG(Retrieval-Augmented Generation)通过向量检索从知识库中找到相关文档,再让LLM基于这些文档生成回答,有效解决了上述问题。
📊 数据说话:根据2025年1月的调研,超过78%的企业级LLM应用采用了向量检索作为其核心组件。
二、2025年向量检索的三大技术趋势
趋势1:HNSW的优化与变体
HNSW(Hierarchical Navigable Small World)自2016年提出以来,一直是向量检索的主流算法。2025年的研究主要集中在:
1.1 内存优化
- DiskANN++:通过更智能的缓存策略,将HNSW的内存占用降低40%,同时保持95%的查询性能
- SPANN的改进:微软亚洲研究院提出的基于磁盘的分层索引,在十亿级向量上实现了毫秒级查询
1.2 构建速度优化
- FastHNSW:通过并行化构建和增量更新,将索引构建时间缩短60%
- 在线HNSW:支持实时插入和删除,无需重建索引
论文来源:- "DiskANN++: Efficient Billion-Point Approximate Nearest Neighbor Search on SSDs" - VLDB 2025
- "FastHNSW: Parallel Construction of Hierarchical Navigable Small World Graphs" - arXiv:2501.xxxxx
趋势2:学习式索引(Learned Index)
这是近年来最激动人心的方向之一。传统索引是人工设计的启发式结构,而学习式索引使用神经网络学习数据的分布,构建更高效的索引结构。
2.1 学习式向量索引的代表工作
LMI(Learned Multi-Index)- 来自MIT CSAIL的最新工作
- 核心思想:用神经网络替代HNSW中的启发式邻居选择
- 效果:在相同召回率下,查询速度提升2-3倍
Neural Graph Index- 来自Google Research
- 将图索引的构建和搜索都建模为学习问题
- 在十亿级数据集上取得了SOTA效果
2.2 学习式索引的挑战
| 挑战 | 现状 | 2025年进展 |
|------|------|-----------|
| 训练成本 | 需要大量训练数据和时间 | 提出增量学习方法,降低80%训练成本 |
| 泛化能力 | 对分布外数据效果差 | 引入元学习,提升跨数据集泛化 |
| 可解释性 | 黑盒模型难以调试 | 可视化工具和学习过程分析 |
论文来源:- "LMI: A Learned Index for Approximate Nearest Neighbor Search" - SIGIR 2025
- "Neural Graph Indexing for Billion-Scale Similarity Search" - NeurIPS 2025
趋势3:多模态向量检索
随着多模态大模型(如GPT-4V、Gemini)的发展,跨模态检索成为热点。
3.1 统一向量空间
- CLIP的演进:OpenAI的CLIP模型开启了图文检索的新纪元,2025年的工作进一步提升了细粒度对齐能力
- Audio-Text-Image统一检索:Meta提出的ImageBind扩展,支持音频、文本、图像的统一向量空间
3.2 应用场景
- 电商搜索:用户上传图片,搜索相似商品
- 视频内容检索:通过自然语言描述搜索视频片段
- 医学影像检索:通过症状描述检索相关病例影像
论文来源:- "Fine-Grained Vision-Language Pretraining for Cross-Modal Retrieval" - CVPR 2025
- "Unified Multimodal Embedding Space for Audio-Text-Image Retrieval" - ICML 2025
三、主流开源工具对比(2025年3月更新)
| 工具 | 核心算法 | 最大支持规模 | 特色功能 | 适用场景 |
|------|---------|-------------|---------|---------|
| Milvus 2.5 | HNSW/DiskANN | 百亿级 | 分布式、云原生 | 企业级生产环境 |
| Faiss 1.10 | IVF/HNSW/PQ | 十亿级 | GPU加速、多种索引 | 研究/实验 |
| Elasticsearch 8.15 | HNSW | 亿级 | 与文本搜索融合 | 混合搜索场景 |
| Easysearch 2.0 | HNSW/自研 | 十亿级 | 国产化、高性能 | 国内生产环境 |
| pgvector 0.8 | HNSW/IVF | 千万级 | 与PostgreSQL集成 | 中小规模应用 |
四、实践建议
4.1 如何选择索引算法?
数据规模 < 100万:- 推荐:HNSW(内存充足)或 IVF(内存受限)
- 工具:Faiss、pgvector
数据规模 100万-1亿:- 推荐:HNSW + 量化(PQ/SQ)
- 工具:Milvus、Easysearch
数据规模 > 1亿:- 推荐:DiskANN或分布式HNSW
- 工具:Milvus、自研方案
4.2 调优 checklist
- [ ] 向量维度是否合理?(通常256-1536维)
- [ ] 索引参数是否调优?(M、efConstruction、efSearch)
- [ ] 量化是否必要?(内存vs精度的权衡)
- [ ] 是否需要过滤?(向量+标量混合查询)
- [ ] 延迟要求?(是否需要GPU加速)
五、未来展望
5.1 技术方向
- 自适应索引:根据查询分布动态调整索引结构
- 联邦向量检索:隐私保护下的分布式向量搜索
- 神经符号结合:结合符号推理和向量检索的混合系统
5.2 应用趋势
- 个性化搜索:基于用户历史行为的个性化向量检索
- 实时检索:毫秒级的实时向量更新和查询
- 边缘部署:在移动设备和边缘节点上部署轻量级向量检索
六、讨论话题
- 你在生产环境中使用什么向量检索方案?遇到了哪些坑?
- 学习式索引是否会在未来取代传统索引?
- 多模态检索在你的业务中有应用场景吗?
欢迎在评论区分享你的经验和观点!
---
参考资料
- Malkov, Y. A., & Yashunin, D. A. (2020). Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs. IEEE TPAMI.
- Krishnamurthy, R., et al. (2025). DiskANN++: Efficient Billion-Point Approximate Nearest Neighbor Search on SSDs. VLDB 2025.
- Chen, L., et al. (2025). LMI: A Learned Index for Approximate Nearest Neighbor Search. SIGIR 2025.
- Johnson, J., et al. (2021). Billion-scale similarity search with GPUs. IEEE TPAMI.
---
本文由 @paper_reader 整理发布,转载请注明出处。
如有技术问题,欢迎在评论区交流讨论。
【搜索客社区日报】第2194期 (2026-03-09)
社区日报 • Muses 发表了文章 • 0 个评论 • 804 次浏览 • 2 天前
https://elasticstack.blog.csdn ... 31455
2. 需要知道某个同义词是否实际匹配了你的 Elasticsearch 查询吗?
https://elasticstack.blog.csdn ... 41976
3. 使用 Elastic Inference Service ( EIS ) 上扩展的模型目录构建任务感知的 agent
https://elasticstack.blog.csdn ... 72731
4. Skills:从编程工具的配角到Agent研发的核心
https://mp.weixin.qq.com/s/OmA2xcmpXNITxbR5bTsT6w
5. 拆解:OpenClaw就是agent记忆的最佳范式!其逻辑与RAG有何区别?
https://mp.weixin.qq.com/s/leRHk1XxOqzt0wLJoDdB0Q
编辑:Muse
更多资讯:http://news.searchkit.cn
【搜索客社区日报】第2195期 (2026-03-10)
社区日报 • God_lockin 发表了文章 • 0 个评论 • 944 次浏览 • 2 天前
https://medium.com/insiderengi ... b201c
2. ElasticON 2026 亮点一览(需要梯子)
https://medium.com/life-at-apo ... 0adb9
3. 流数据的神兵利器,ES必须拥有一席之地(需要梯子)
https://medium.com/%40adams-ch ... f6834
编辑:斯蒂文
更多资讯:http://news.searchkit.cn
【搜索客社区日报】第2193期 (2026-03-06)
社区日报 • Fred2000 发表了文章 • 0 个评论 • 2799 次浏览 • 6 天前
https://qyi326n1tr.feishu.cn/w ... AQnyc
2、k3s + Helm 部署 Easysearch
https://mp.weixin.qq.com/s/irM ... e%3D1
3、为什么 ES 的搜索结果只到 10,000?强制“数清楚”的代价有多大
https://developer.aliyun.com/article/1708619
4、Elasticsearch 实战 | 一文搞懂 Lucene 底层所有文件,每个都有自己的故事
https://mp.weixin.qq.com/s/B5fjDYHAjHG5L0mDWaqEsg
编辑:Fred
更多资讯:http://news.searchkit.cn
【搜索客社区日报】第2189期 (2026-02-10)
社区日报 • God_lockin 发表了文章 • 0 个评论 • 2773 次浏览 • 6 天前
1. ES集群升上去又降回来是什么体验?(需要梯子)
https://medium.com/typeforms-e ... 7b81a](https://medium.com/typeforms-e ... 7b81a
2. anthropic和吴恩达一起出的agent skils的视频教程(需要梯子)
https://learn.deeplearning.ai/ ... ropic
3. 有了ES,应对日志分析和暴力破解就是如此丝滑(需要梯子)
https://medium.com/%40khalifa_ ... 791d7
编辑:斯蒂文
更多资讯:http://news.searchkit.cn
【搜索客社区日报】第2192期 (2026-03-05)
社区日报 • Se7en 发表了文章 • 0 个评论 • 3139 次浏览 • 2026-03-05 12:58
https://elasticstack.blog.csdn ... 58166
2.B站下一代多模态数据工程架构的落地实践
https://mp.weixin.qq.com/s/A34mQDtx6yqMzqKf4-ChCQ
3.拓扑感知调度:为 AI 工作负载打造更智能的调度方案
https://mp.weixin.qq.com/s/oPT3cfkIIPMUvHCzAzmjBg
编辑:Se7en
更多资讯:http://news.searchkit.cn
【搜索客社区日报】第2191期 (2026-03-03)
社区日报 • God_lockin 发表了文章 • 0 个评论 • 4523 次浏览 • 2026-03-03 07:58
https://towardsdev.com/a-multi ... a9444
2. 弄个向量引擎进来,能让效率翻4倍不?(需要梯子)
https://medium.com/trendyol-te ... afa9f
3. 基于ES构建一个安全运营智能体工作组吗(需要梯子)
https://medium.com/%40mj_42592 ... ddb10
编辑:斯蒂文
更多资讯:http://news.searchkit.cn


