BGE M3-embedding 中Dense retrieval、Lexical Retrieval、Multi-Vec Retrieval解释

在BGE M3-embedding模型中,Dense Retrieval、Lexical Retrieval和Multi-Vec Retrieval是三种不同的检索方法

1. Dense Retrieval(稠密检索)

定义:稠密检索是基于向量相似度的检索方法。它将查询和文档都转换为高维向量,然后通过计算这些向量之间的相似度(通常使用余弦相似度或欧几里得距离)来找到最相关的文档。

示例

  • 假设你有一个查询“我想吃水果”,经过BGE M3-embedding模型处理后,得到一个向量 [0.2, 0.3, 0.5]
  • 同时,你的文档库中的每个文档也被转换为向量,比如文档1的向量是 [0.1, 0.3, 0.4],文档2的向量是 [0.2, 0.1, 0.6]
  • 通过计算查询向量与文档向量之间的相似度,你可以找到与查询最相关的文档。

优点:能够捕捉到语义上的相似性,适合处理复杂的查询。

2. Lexical Retrieval(词汇检索)

定义:词汇检索是基于关键词匹配的检索方法。它通过查找查询中的关键词在文档中出现的频率来评估相关性,通常使用倒排索引等技术。

示例

  • 继续使用查询“我想吃水果”,词汇检索会检查文档库中哪些文档包含“我”、“想”、“吃”、“水果”等关键词。
  • 如果文档1包含“我想吃苹果”,而文档2只包含“我想喝水”,那么文档1的相关性会更高。
    注:很像tfidf,也跟RetroMAE-V2的第二部分特征很相似,这部分特征更在意文本中各个token的信息,重要的token就赋予更高的权重。

优点:简单高效,适合处理结构化的查询和文档。

3. Multi-Vec Retrieval(多向量检索)

定义:多向量检索结合了稠密检索和词汇检索的优点。它不仅使用向量表示来计算相似度,还考虑了关键词的匹配。通过这种方式,可以更全面地评估文档的相关性。

示例

  • 对于查询“我想吃水果”,多向量检索会同时计算查询的向量表示和关键词匹配。
  • 如果文档1的向量与查询向量相似,并且包含关键词“水果”,那么它的相关性会被进一步提升。

优点:综合了语义和词汇匹配的优势,能够提高检索的准确性和鲁棒性。

总结

  • Dense Retrieval:基于向量相似度,适合捕捉语义相似性。
  • Lexical Retrieval:基于关键词匹配,简单高效。
  • Multi-Vec Retrieval:结合了稠密检索和词汇检索的优点,提供更全面的相关性评估。

详细解释:
https://blog.youkuaiyun.com/qq_35812205/article/details/136129356

### 集成和使用 BGE M3 Embedding 为了在 FastGPT 中集成并使用 BGE M3 Embedding,需遵循特定步骤来确保模型能够被正确加载和调用。以下是具体方法: #### 准备工作环境 确保已成功安装 FastGPT 和 OneAPI 平台[^1]。这一步骤对于后续操作至关重要。 #### 下载预训练模型 获取 `bge-m3` 模型文件。该模型可以用于生成高质量的文本嵌入表示,适用于多种自然语言处理任务[^2]。 ```bash git clone https://github.com/mofanke/acge_text_embedding.git cd acge_text_embedding pip install -r requirements.txt ``` #### 加载模型至 FastGPT 通过 API 或者命令行工具将下载好的 `bge-m3` 模型导入到 FastGPT 的环境中。通常情况下,可以通过修改配置文件指定路径指向本地存储的模型位置。 ```json { "model": { "name": "bge-m3", "path": "/path/to/bge_m3_model" } } ``` #### 调整应用逻辑以支持新功能 为了让应用程序充分利用新的 embedding 功能,在编码阶段应考虑调整现有代码结构以便更好地适配这些特性。例如,当构建查询语句时可以直接利用 `bge-m3` 提供的方法来进行相似度计算或其他高级 NLP 应用场景下的数据处理。 ```python from transformers import AutoTokenizer, AutoModelForSequenceClassification tokenizer = AutoTokenizer.from_pretrained("/path/to/bge_m3_model") model = AutoModelForSequenceClassification.from_pretrained("/path/to/bge_m3_model") def get_embeddings(texts): inputs = tokenizer(texts, return_tensors="pt", padding=True, truncation=True) outputs = model(**inputs)[0].mean(dim=1).detach().numpy() return outputs ``` 上述代码展示了如何基于 Hugging Face Transformers 库加载自定义路径中的 `bge-m3` 模型,并实现了一个简单的函数用来提取输入文本对应的 embeddings 表达形式[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值