Skip to content

如何选择与优化向量检索中的 Embedding 策略

解决 RAG(检索增强生成)应用中检索质量低、召回不精准的问题:通过科学选择 Embedding 模型、优化文本切分策略并建立评估机制,提升向量搜索的语义匹配度。

为什么需要这个技能

在构建 AI 知识库或 RAG 系统时,Embedding(嵌入)是将文本转化为数学向量的关键步骤。如果模型选择不当(如用通用模型处理专业代码)或切分策略太随意(如在句子中间强行截断),会导致 AI 无法检索到正确的上下文,从而产生幻觉或回答不完整。

掌握 Embedding 策略意味着你能够根据场景在“成本、速度、精度”之间找到平衡点,并确保数据的语义完整性。

适用场景

  • 模型选型:在 OpenAI、Voyage 等商业模型与 BGE、E5 等开源模型间做抉择。
  • RAG 优化:优化 Chunking(分块)策略以提升检索召回率。
  • 领域适配:针对代码、法律、医疗等特定领域微调或选择专用模型。
  • 多语言支持:处理跨语言检索的向量对齐问题。
  • 性能调优:通过维度缩减(Matryoshka)降低向量存储成本。

核心工作流

  1. 需求分析:明确数据类型(代码/文档)、语言要求(单语言/多语言)以及对延迟的容忍度。
  2. 模型匹配:参考模型矩阵(如 text-embedding-3-small 侧重性价比,bge-large 侧重开源性能)。
  3. 设计切分管道
    • 预处理:清洗噪声字符。
    • 分块:采用递归字符切分或语义段落切分,并设置合理的 Overlap(重叠区)以保持上下文。
  4. 实施向量化:利用 API 或本地 sentence-transformers 进行批处理转换。
  5. 质量评估:使用 MRR、Recall@K 等指标量化检索质量,并根据结果迭代切分大小。
python
# 示例:基于 Token 的递归切分逻辑
def chunk_by_tokens(
    text: str,
    chunk_size: int = 512,
    chunk_overlap: int = 50,
    tokenizer=None
) -> List[str]:
    import tiktoken
    tokenizer = tokenizer or tiktoken.get_encoding("cl100k_base")
    tokens = tokenizer.encode(text)
    chunks = []
    start = 0
    while start < len(tokens):
        end = start + chunk_size
        chunk_tokens = tokens[start:end]
        chunks.append(tokenizer.decode(chunk_tokens))
        start = end - chunk_overlap
    return chunks

下载和安装

下载 embedding-strategies 中文版 Skill ZIP

解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md

你可能还需要

暂无推荐