新闻详情

新闻详情

首页 / 资讯中心 / 详情

RAG原理-倒排索引和KNN

发布时间:2026/9/27 21:53:13来源:尧图网络
RAG原理-倒排索引和KNN
本节从两条检索路线展开倒排索引用关键词快速定位文档KNN 则在向量空间中寻找与查询最接近的 Top-K 数据。理解二者是继续学习 ANN、聚类索引和向量数据库的基础。一、倒排索引从“文档找词”变成“词找文档”1. 什么是倒排索引普通文档可以看成“文档 → 词语”的关系倒排索引把它反过来建立“词语 → 文档”的映射。词项 term - [(文档 ID, 出现位置), ...]查询某个关键词时不需要逐篇扫描全部文档只要在词典中找到该词再读取对应的文档列表即可。2. 视频中的分词示例原始文本大模型的应用在2025年会有哪些发展经过 Tokenization 后可以拆分为[大模型, 的, 应用, 在, 2025年, 会, 有哪些, 发展]随后为每个词项记录它出现在哪些文档、哪些位置。例如大模型 - [(doc_1, [0]), (doc_3, [5])] 2025年 - [(doc_1, [4])] 发展 - [(doc_1, [7]), (doc_2, [2])]上述 posting list 是结构示意。真实系统还可能保存词频、字段、位置、文档长度等信息用于短语查询和相关性排序。3. 建立与查询流程原始文档 - 文本清洗 - 分词与标准化 - 生成 term - posting list - 查询词分词 - 合并命中文档 - 相关性排序倒排索引擅长精确关键词、专有名词、编号和短语检索但如果查询与文档用词不同即使语义相近也可能无法命中。二、KNN在向量空间中寻找最近邻KNNK-Nearest NeighborsK 近邻搜索的核心过程是先把查询转换成向量再与数据库中的向量计算距离或相似度最终选出最接近的 K 个结果。查询文本 - Embedding 向量 q - 与所有候选向量计算距离/相似度 - 排序 - 返回 Top-K 最近邻1. 常见度量方式度量方式判断规则适用说明余弦相似度值越大越相似关注向量方向文本语义检索中常用欧氏距离L2距离越小越相似关注向量在空间中的直线距离点积Inner Product值越大越相似会受到向量模长影响余弦相似度公式cosine⁡(A,B)A⋅B∥A∥ ∥B∥ \operatorname{cosine}(A,B)\frac{A\cdot B}{\|A\|\,\|B\|}cosine(A,B)∥A∥∥B∥A⋅B​2. 暴力搜索Brute Force Search视频重点介绍了最直接的精确 KNN查询向量与数据集中的每一个向量都计算一次距离再排序并取前 K 个。for each vector x_i: score_i similarity(query, x_i) sort all scores return top_k设数据库共有N个向量每个向量维度为D距离计算量约为O(N × D)若对全部得分完整排序还会产生排序开销优点是结果精确、实现简单不会因为索引近似而漏掉真正的最近邻缺点是数据规模增大后查询延迟与计算成本会明显上升。因此暴力搜索更适合数据量较小、对精度要求高或用于效果基线的场景。三、精确 KNN 的 Python 实现下面使用余弦相似度完成一个不依赖第三方库的精确搜索示例frommathimportsqrtdefcosine_similarity(vector_a,vector_b):计算两个等长非零向量的余弦相似度。iflen(vector_a)!len(vector_b):raiseValueError(向量维度必须一致)dot_productsum(a*bfora,binzip(vector_a,vector_b))norm_asqrt(sum(a*aforainvector_a))norm_bsqrt(sum(b*bforbinvector_b))ifnorm_a0.0ornorm_b0.0:raiseValueError(不能计算零向量的余弦相似度)returndot_product/(norm_a*norm_b)defexact_knn(query_vector,document_vectors,k3):遍历全部向量返回相似度最高的 Top-K。ifk0:raiseValueError(k 必须大于 0)scored_items[(index,cosine_similarity(query_vector,vector))forindex,vectorinenumerate(document_vectors)]scored_items.sort(keylambdaitem:item[1],reverseTrue)returnscored_items[:k]query[1.0,0.0]documents[[0.9,0.1],[0.8,0.2],[0.1,0.9],]print(exact_knn(query,documents,k2))这段代码会对所有文档向量逐一打分因此得到的是精确结果生产环境中的向量数据库则会使用更高效的数据结构和批量计算。四、倒排索引与 KNN 的区别对比项倒排索引KNN 向量检索检索依据词项是否出现、词频与位置向量距离或相似度擅长内容关键词、编号、专有名词、精确短语同义表达、自然语言语义相关内容核心数据结构词典 posting list向量集合或向量索引主要限制难以直接理解语义精确遍历在大规模数据上成本高典型用途全文搜索、过滤与精确召回RAG 语义召回、相似内容检索两者不是互斥关系。实际 RAG 系统经常把关键词检索和向量检索组合成混合检索再通过 Rerank 统一排序。五、为什么还需要 ANN精确 KNN 会扫描全部向量数据量越大越慢。为了在大规模数据上降低延迟工程中通常使用 ANNApproximate Nearest Neighbor近似最近邻搜索不再保证每次都找到理论上的绝对最近邻通过牺牲少量召回率换取更快的查询速度常见思路包括聚类索引、图索引以及向量量化。本集最后由暴力 KNN 引出了 ANN后续章节会继续介绍近似搜索与聚类索引。六、核心总结倒排索引通过term - posting list实现快速关键词定位。KNN 把查询和文档放入同一向量空间返回距离最近的 K 个结果。暴力 KNN 结果精确但需要遍历所有向量更适合小规模数据。大规模检索需要 ANN在召回率、速度和资源消耗之间做权衡。RAG 工程中可结合倒排索引与向量检索同时获得关键词精度和语义召回能力。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Go 网络编程从入门到精通:TCP 服务端 + 客户端 完整实战 2026/9/27 22:48:22

Go 网络编程从入门到精通:TCP 服务端 + 客户端 完整实战

很多人学 Go,最大的优势就是:Go 是最适合写网络程序的语言。Java、Python 写高并发网络服务很笨重,但 Go 原生支持高并发、轻量级协程,写 Socket 服务极其简单。今天我用最通俗的话,带你从零搞懂 Go 网络编程核心原理 …

阅读更多 →
5招搞定wordpress批量发文章,免费工具全解析 2026/9/27 22:48:15

5招搞定wordpress批量发文章,免费工具全解析

5招搞定wordpress批量发文章,免费工具全解析 刚接手一个500页的企业站,客户甩来几百篇SEO软文,让你“尽快上线”。你盯着后台那个单篇发布按钮,脑子瞬间嗡嗡作响。手动复制粘贴?手都要废了,而且错漏率极高。更让人头大的是,如果服务器…

阅读更多 →
【老计带你懂AI算法】09:孤立森林,抓异常的高手,专挑那些“一眼就不对劲“的点 2026/9/27 22:48:08

【老计带你懂AI算法】09:孤立森林,抓异常的高手,专挑那些“一眼就不对劲“的点

【老计带你懂AI算法】09:孤立森林,抓异常的高手,专挑那些"一眼就不对劲"的点开头:抓异常,是个特别的任务 前面讲的分类、聚类,处理的都是"大部队"。可有一类任务,恰恰要盯着…

阅读更多 →
基于YOLOv8的自动车牌识别机器学习实战项目python数据分析与可视化 2026/9/27 22:48:08

基于YOLOv8的自动车牌识别机器学习实战项目python数据分析与可视化

✅源码获取: 🍅--------------------【点击左上方头像,在置顶文章上方的wx】联系我们-------------🍅✌网站介绍:✌10年项目辅导经验、专注于计算机技术领域学生项目实战辅导。✌服务范围:大数据、机器学习…

阅读更多 →
〖共创稿事节〗HarmonyOS 7 新特性实战(06):TiledGSNode 分块请求、相机驱动与离页清理 2026/9/27 22:48:07

〖共创稿事节〗HarmonyOS 7 新特性实战(06):TiledGSNode 分块请求、相机驱动与离页清理

一个小展品可以整体加载,整座展厅却未必适合一次读入。用户站在入口时,只需要入口附近可见的内容;把远处房间也全部准备好,会延长首屏并抬高内存占用。分块场景要解决的是可见范围、数据就绪与资源预算之间的协调。 API 26 的 Ti…

阅读更多 →
Linux指令(二) 2026/9/27 22:48:07

Linux指令(二)

Linux下一切皆文件,如向显示器打印是向显示器文件进行写入;从键盘输入数据是从键盘文件读入数据echo 内容:默认将此内容写入到显示器文件上ccho 内容 > 文件名:会将此内容写入到指定文件(若文件不存在会新建&#x…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉