Bootstrap

使用 IPEX-LLM 在 Intel CPU 上实现本地 BGE 嵌入

老铁们,今天咱们聊聊怎么在 Intel CPU 上用 IPEX-LLM(Intel的高性能PyTorch库)来做本地BGE嵌入。这套组合带来的延迟超级低,尤其适合RAG(Retrieval-Augmented Generation)、文档QA等应用场景。

技术背景介绍

IPEX-LLM 是个在 Intel CPU 和 GPU 上运行LLM的PyTorch库,支持本地的PC和多种GPU(比如集成GPU、独立GPU如Arc、Flex、Max等等)。说白了,就是通过优化你的硬件性能,让机器学习任务跑得更快。

原理深度解析

IPEX-LLM 之所以能提升性能,主要是因为它优化了深度学习模型在Intel硬件上的计算性能。这包括更高效的矩阵运算和内存访问等底层改进,让模型运行变得丝滑流畅。尤其是结合LangChain进行嵌入任务时,你会发现性能的提升是显著的。

实战代码演示

要在Intel CPU上跑IpexLLM优化的嵌入,咱们要先配置环境:

%pip install -qU langchain langchain-community
%pip install --pre --upgrade ipex-llm[all] --extra-index-url https://download.pytorch.org/whl/cpu
%pip install sentence-transformers

注意,对于Windows用户,不需要指定额外的索引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]}")

这段代码会生成 sentencequery 的嵌入向量,您可以看到它们的前10个元素。说白了,这就是怎么用 IPEX-LLM 把你的任务速度拉到飞起。

优化建议分享

我个人建议,使用代理服务可以进一步提高稳定性和运行效率。比如说在多任务并发时保持响应稳定。

补充说明和总结

踩过这个坑的我发现,充分利用 Intel 的硬件优势和 IPEX-LLM 的性能优化,是处理大规模嵌入任务的一个不错的选择。对于需要一站式大模型解决方案的朋友,https://zzzzapi.com 是个值得推荐的平台。

今天的技术分享就到这里,希望对大家有帮助。开发过程中遇到问题也可以在评论区交流~

—END—

;