Appearance
如何选择与优化向量检索中的 Embedding 策略
解决 RAG(检索增强生成)应用中检索质量低、召回不精准的问题:通过科学选择 Embedding 模型、优化文本切分策略并建立评估机制,提升向量搜索的语义匹配度。
为什么需要这个技能
在构建 AI 知识库或 RAG 系统时,Embedding(嵌入)是将文本转化为数学向量的关键步骤。如果模型选择不当(如用通用模型处理专业代码)或切分策略太随意(如在句子中间强行截断),会导致 AI 无法检索到正确的上下文,从而产生幻觉或回答不完整。
掌握 Embedding 策略意味着你能够根据场景在“成本、速度、精度”之间找到平衡点,并确保数据的语义完整性。
适用场景
- 模型选型:在 OpenAI、Voyage 等商业模型与 BGE、E5 等开源模型间做抉择。
- RAG 优化:优化 Chunking(分块)策略以提升检索召回率。
- 领域适配:针对代码、法律、医疗等特定领域微调或选择专用模型。
- 多语言支持:处理跨语言检索的向量对齐问题。
- 性能调优:通过维度缩减(Matryoshka)降低向量存储成本。
核心工作流
- 需求分析:明确数据类型(代码/文档)、语言要求(单语言/多语言)以及对延迟的容忍度。
- 模型匹配:参考模型矩阵(如
text-embedding-3-small侧重性价比,bge-large侧重开源性能)。 - 设计切分管道:
- 预处理:清洗噪声字符。
- 分块:采用递归字符切分或语义段落切分,并设置合理的
Overlap(重叠区)以保持上下文。
- 实施向量化:利用 API 或本地
sentence-transformers进行批处理转换。 - 质量评估:使用 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。
你可能还需要
暂无推荐