标签

#向量

2 篇文章

api-开发fastapigcpgithubk8smcpnginxopenairag上下文医学向量对话代码流式爬虫环境配置
稀疏向量检索流程
AI 大模型开发
26 分钟

稀疏向量检索流程

这是一篇面向中文 RAG 原型实现的稀疏检索流程拆解,围绕“切块、分词、构建 BM25 索引、查询打分”串起完整链路。正文用 Python 示例演示如何借助 RecursiveCharacterTextSplitter 控制 chunk_size、chunk_overlap 和分隔符优先级,用 jieba 处理中文分词,再通过 rank_bm25 构建 BM25Okapi 索引并返回 Top-N 检索结果。文章进一步展开 BM25 内部保存的 idf、doc_freqs、doc_len、avgdl 等统计量,说明 IDF 是基于全部 chunks 的全局逆文档频率,文档侧权重包含 TF 饱和与长度归一化,而查询侧通常按 IDF 与查询词频生成稀疏向量。示例还展示了“苹果手机最新功能”能够命中包含相同词汇的 chunk,却无法匹配语义相关但字面不同的 “iPhone 16 Pro Max”,由此揭示 BM25 作为词汇匹配方法在同义词和近义表达上的天然短板。对于工程选型,正文区分了 rank_bm25 的内存线性扫描特性与 Elasticsearch、Milvus 等生产级倒排索引方案,并指出前者适合小规模验证,后者更适合大规模、增量更新和低延迟检索。最后通过传统 BM25 与 Learned Sparse 的对比,帮助读者理解可解释统计检索、神经稀疏检索和稠密检索在 Hybrid RAG 中各自的定位,适合正在搭建中文知识库检索、调试召回效果或评估 RAG 检索架构的开发者阅读。

向量
AI 大模型开发
8 分钟

稠密向量 与 稀疏向量

这篇笔记从 RAG 检索质量出发,解释文本向量化时常见的稀疏向量与稠密向量两条路线:前者维度通常等于词汇表规模,只有少量非零值,代表方法是 BM25 和 TF-IDF;后者维度较低但几乎每一维都有实数值,常由 BERT、BGE、OpenAI Embedding 等模型生成。内容重点说明 BM25 只基于已分词后的 token 计算 TF、IDF 和文档长度分数,本身不负责分词,因此中文、日语、泰语、阿拉伯语、德语复合词等场景会受到分词或形态处理质量影响。稠密向量部分则说明 Embedding 模型通过对比学习把语义相近文本拉近、语义不同文本推远,并列出余弦相似度、点积、欧氏距离等常见匹配方式。对比部分强调稀疏检索适合专有名词、数字和明确短语,解释性强且对精确关键词敏感;稠密检索更适合自然语言和模糊语义查询,但可能在稀有词、精确匹配和算力成本上存在短板。实践建议落在混合检索:并行使用 BM25 与 Embedding 召回,再通过 RRF 等方法融合排序,借助 Milvus、Qdrant、Weaviate 等向量数据库实现更稳健的 RAG 检索链路。

向量