<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>向量检索 on AI 拾遗笔记</title><link>https://bloge.oya.moe/tags/%E5%90%91%E9%87%8F%E6%A3%80%E7%B4%A2/</link><description>Recent content in 向量检索 on AI 拾遗笔记</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Fri, 10 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://bloge.oya.moe/tags/%E5%90%91%E9%87%8F%E6%A3%80%E7%B4%A2/index.xml" rel="self" type="application/rss+xml"/><item><title>做了一年 RAG 项目，总结的几条避坑经验</title><link>https://bloge.oya.moe/posts/rag-best-practices/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><guid>https://bloge.oya.moe/posts/rag-best-practices/</guid><description>&lt;h2 id="写在前面"&gt;写在前面&lt;/h2&gt;
&lt;p&gt;过去一年深度参与了三个生产级 RAG 系统的搭建，从最初的 demo 到稳定服务百万级查询，踩过的坑足够写本书。这里挑几条最有共鸣的经验。&lt;/p&gt;
&lt;h2 id="1-文档切分策略远比你想的重要"&gt;1. 文档切分策略远比你想的重要&lt;/h2&gt;
&lt;p&gt;很多人直接 &lt;code&gt;RecursiveCharacterTextSplitter&lt;/code&gt; 切 500 字一段就完事了，效果当然不好。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;真正有效的切分原则&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;按语义边界切&lt;/strong&gt;：标题、段落、列表项是天然分割点。Markdown 文档优先按标题层级切（H1/H2/H3），保留上下文层级&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;保留元数据&lt;/strong&gt;：每个 chunk 至少要带：文档来源、章节标题路径、原始位置。检索时这些都是重要信号&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;重叠策略&lt;/strong&gt;：chunk 之间保留 10-20% 重叠，避免把关键信息切在边界&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;chunk 大小自适应&lt;/strong&gt;：FAQ 类用 200-400 token，技术文档用 500-800 token，叙述性文档用 1000+ token&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;实测：从&amp;quot;无脑切 500&amp;quot;换到&amp;quot;按 Markdown 标题切 + 携带 H1&amp;gt;H2&amp;gt;H3 路径&amp;quot;，准确率提升约 15%。&lt;/p&gt;
&lt;h2 id="2-单纯向量检索不够混合检索才是基线"&gt;2. 单纯向量检索不够，混合检索才是基线&lt;/h2&gt;
&lt;p&gt;Embedding 擅长&lt;strong&gt;语义相似&lt;/strong&gt;，但对&lt;strong&gt;精确匹配&lt;/strong&gt;（产品代号、人名、专有术语）非常弱。生产环境基本都是混合检索：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;最终得分 = α × 向量相似度 + (1-α) × BM25 得分
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;进阶玩法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;多路召回 + RRF 合并&lt;/strong&gt;：BM25、向量、ColBERT、关键词扩展各召回一批，用 Reciprocal Rank Fusion 合并&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Query 重写&lt;/strong&gt;：用小模型把用户口语化提问改写成检索友好的形式&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HyDE&lt;/strong&gt;：让 LLM 先针对问题&amp;quot;幻觉&amp;quot;出一个假设答案，用这个假设答案的 embedding 去检索（适合长尾问题）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-rerank-是性价比最高的优化点"&gt;3. Rerank 是性价比最高的优化点&lt;/h2&gt;
&lt;p&gt;向量检索召回 50-100 条，再用 Cross-Encoder 模型对这些候选打分排序，只把 Top 5 喂给 LLM。&lt;/p&gt;</description></item><item><title>2026 年中文 Embedding 模型选型指南</title><link>https://bloge.oya.moe/posts/embedding-models-2026/</link><pubDate>Thu, 12 Mar 2026 00:00:00 +0000</pubDate><guid>https://bloge.oya.moe/posts/embedding-models-2026/</guid><description>&lt;h2 id="为什么-embedding-选型很重要"&gt;为什么 Embedding 选型很重要&lt;/h2&gt;
&lt;p&gt;RAG 系统的天花板在很大程度上由 Embedding 模型决定。Embedding 不准，后面的 Rerank 和生成再厉害也救不回来。&lt;/p&gt;
&lt;p&gt;中文场景比英文复杂：词的边界模糊、同义词多、行业术语差异大，对模型的理解力要求更高。&lt;/p&gt;
&lt;p&gt;下面整理目前（2026 年初）值得选用的中文 Embedding 模型，按使用场景分类。&lt;/p&gt;
&lt;h2 id="通用首选bge-系列"&gt;通用首选：BGE 系列&lt;/h2&gt;
&lt;p&gt;智源（BAAI）出品，目前中文 Embedding 的事实标准。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;主力型号&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;bge-large-zh-v1.5&lt;/code&gt;：1024 维，1.3GB，通用场景最佳&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bge-base-zh-v1.5&lt;/code&gt;：768 维，400MB，性能/速度平衡&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bge-small-zh-v1.5&lt;/code&gt;：512 维，100MB，资源受限场景&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;特点&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;C-MTEB 中文榜单长期前列&lt;/li&gt;
&lt;li&gt;训练数据覆盖广，开箱即用&lt;/li&gt;
&lt;li&gt;HuggingFace、ModelScope 都有，部署友好&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;典型用法&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;from&lt;/span&gt; sentence_transformers &lt;span style="color:#f92672"&gt;import&lt;/span&gt; SentenceTransformer
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;model &lt;span style="color:#f92672"&gt;=&lt;/span&gt; SentenceTransformer(&lt;span style="color:#e6db74"&gt;&amp;#39;BAAI/bge-large-zh-v1.5&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;embeddings &lt;span style="color:#f92672"&gt;=&lt;/span&gt; model&lt;span style="color:#f92672"&gt;.&lt;/span&gt;encode(texts, normalize_embeddings&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;True&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;注意：BGE 在做相似度查询时，建议给 query 加前缀 &lt;code&gt;&amp;quot;为这个句子生成表示以用于检索相关文章：&amp;quot;&lt;/code&gt;，能提升 1-2 个点。&lt;/p&gt;
&lt;h2 id="多语言场景bge-m3"&gt;多语言场景：BGE-M3&lt;/h2&gt;
&lt;p&gt;如果业务有跨语言需求（中英混合查询、跨语言检索），BGE-M3 是最强选择。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;核心特点&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同时支持稠密向量、稀疏向量、ColBERT-style 多向量&lt;/li&gt;
&lt;li&gt;100+ 语言原生支持&lt;/li&gt;
&lt;li&gt;单模型出三种检索信号，下游融合方便&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;适合场景&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;跨境电商、出海业务&lt;/li&gt;
&lt;li&gt;中英文混合的技术文档检索&lt;/li&gt;
&lt;li&gt;需要多路召回的高级 RAG 系统&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="高性能选择gte-系列"&gt;高性能选择：GTE 系列&lt;/h2&gt;
&lt;p&gt;阿里通义出品，性能在某些 benchmark 上反超 BGE。&lt;/p&gt;</description></item></channel></rss>