- content
简述
本文主要记录对于提高rag相似度的经验.
基础概念
embedding 向量 和 embeddingModel
词(苹果) -> token(15963) -> 词向量(0.1,0.5,0.8...)
词向量([苹果] 0.1,0.5,0.8...) + 词向量([14] 0.9,0.3,0.6...) ---(多头注意力)---> 句子向量([苹果14] 0.8,0.2.0,7...)
词嵌入模型执行如下步骤
- 先将一个句子分词(Tokenize),映射为模型词表对应的 TokenID,例如 苹果 = 15963
- 根据模型嵌入权重,将每个 TokenID 查表转换为原始静态词向量
- 将整句多个原始词向量,送入多层 Transformer + 多头自注意力做上下文交互迭代,生成带上下文的 Token 向量;再通过均值池化压缩聚合,得到唯一句向量
- 任意两段文本的最终向量,通过余弦相似度计算,数值越高语义越相近
- 同一款模型(如 all-minilm-l6-v2),不同框架 / 工具会因是否归一化、池化策略、预处理差异,导致相似度绝对值不同;但语义相似度排序结果基本一致
简单的提高BI知识库相似度准确性的手段
-
知识文本优化
- 只有部分字段参数RAG 召回相似度匹配. (比如: 查询案例中 query 参与相似度, sql 不参与计算只参与返回)
- 过长的知识会稀释注意力和相似度, 超过 500 个 token 之后的内容不参与向量相似的计算
- 统一指标名词、业务术语、同义描述; 避免同一指标多种写法造成向量语义分裂,降低跨问句召回失败率。
- 早期测试通过的知识, 后期可能和新知识冲突, 或被新知识淘汰出 topN 召回列表, 需要定期回顾检查
-
文本向量程化以前程序自动降噪
目标: 压缩短句, 只提取文本中的核心语义去计算相似度. (只影响相速度评分, 对外不可见)
原始问题: 帮我查询2026年4月14日的订单总量如何?
降噪以后: 某日的「订单总量」
- 删除无意义的前缀后缀
- 删除所有的日期时间及数字值
- 给关键字打上引号标记