langchain-nvidia-ai-endpoints 软件包包含 LangChain 集成,用于构建使用 NVIDIA NIM 推理微服务上模型的应用程序。NIM 支持来自社区和 NVIDIA 的跨领域模型,如聊天、嵌入和重排模型。这些模型经 NVIDIA 优化,可在 NVIDIA 加速基础设施上提供最佳性能,并部署为 NIM,这是一种易于使用、预构建的容器,可通过 NVIDIA 加速基础设施上的单个命令部署在任何地方。 NVIDIA 托管的 NIM 部署可在 NVIDIA API 目录上进行测试。测试后,NIM 可使用 NVIDIA AI Enterprise 许可证从 NVIDIA 的 API 目录导出,并在本地或云端运行,从而使企业拥有其 IP 和 AI 应用程序的所有权和完全控制权。 NIM 作为容器镜像按模型打包,并通过 NVIDIA NGC 目录作为 NGC 容器镜像分发。NIM 的核心是为在 AI 模型上运行推理提供简单、一致且熟悉的 API。 本示例介绍了如何使用 LangChain 通过 NVIDIAEmbeddings 类与支持的 NVIDIA Retrieval QA Embedding 模型进行交互,以实现 检索增强生成。 有关通过此 API 访问聊天模型的更多信息,请查看 ChatNVIDIA 文档。安装
设置
入门- 在托管 NVIDIA AI Foundation 模型的 NVIDIA 创建一个免费帐户。
-
选择
Retrieval选项卡,然后选择您选择的模型。 -
在
Input下,选择Python选项卡,然后单击Get API Key。然后单击Generate Key。 -
复制并保存生成的密钥为
NVIDIA_API_KEY。从那时起,您应该可以访问这些端点。
NVIDIAEmbeddings 类与此模型以及 NIM 支持的其他嵌入模型进行接口。
在 NVIDIA API 目录中使用 NIMs
初始化嵌入模型时,您可以通过传递它来选择一个模型,例如下面的NV-Embed-QA,或者不传递任何参数来使用默认值。
Embeddings 方法,包括
-
embed_query:为查询样本生成查询嵌入。 -
embed_documents:为要搜索的文档列表生成段落嵌入。 -
aembed_query/aembed_documents:上述方法的异步版本。
使用自托管 NVIDIA NIMs
准备部署时,您可以使用 NVIDIA NIM(包含在 NVIDIA AI Enterprise 软件许可证中)自托管模型,并在任何地方运行它们,从而让您拥有自定义的所有权并完全控制您的知识产权 (IP) 和 AI 应用程序。 了解更多关于 NIM 的信息相似度
以下是这些数据点相似度的一个快速测试: 查询:- 勘察加的天气怎么样?
- 意大利以哪些美食闻名?
- 我叫什么名字?我敢打赌你不记得了……
- 生命的意义到底是什么?
- 生命的意义在于玩得开心 :D
- 勘察加天气寒冷,冬季漫长而严酷。
- 意大利以意大利面、披萨、冰淇淋和意式浓缩咖啡闻名。
- 我无法回忆个人姓名,只能提供信息。
- 生命的意义因人而异,通常被视为个人实现。
- 享受生活中的美好时刻确实是一种绝佳的方式。
嵌入运行时
文档嵌入
- 勘察加的天气怎么样?
- 意大利以哪些美食闻名?
- 我叫什么名字?我敢打赌你不记得了……
- 生命的意义到底是什么?
- 生命的意义在于玩得开心 :D
- 勘察加天气寒冷,冬季漫长而严酷。
- 意大利以意大利面、披萨、冰淇淋和意式浓缩咖啡闻名。
- 我无法回忆个人姓名,只能提供信息。
- 生命的意义因人而异,通常被视为个人实现。
- 享受生活中的美好时刻确实是一种绝佳的方式。
截断
嵌入模型通常具有固定的上下文窗口,该窗口决定了可以嵌入的最大输入令牌数。此限制可以是硬限制,等于模型的最大输入令牌长度,也可以是有效限制,超出此限制后嵌入的准确性会降低。 由于模型在令牌上运行,而应用程序通常使用文本,因此应用程序可能难以确保其输入保持在模型的令牌限制内。默认情况下,如果输入过大,则会抛出异常。 为了解决这个问题,NVIDIA 的 NIM(API 目录或本地)提供了一个truncate 参数,如果输入过大,该参数会在服务器端截断输入。 truncate 参数有三个选项:- “NONE”:默认选项。如果输入过大,则会抛出异常。
- “START”:服务器从开头(左侧)截断输入,根据需要丢弃令牌。
- “END”:服务器从末尾(右侧)截断输入,根据需要丢弃令牌。
RAG 检索
以下是 LangChain 表达式语言检索手册条目的初始示例的重新利用,但使用 AI Foundation Models 在其游乐场环境中提供的 Mixtral 8x7B Instruct 和 NVIDIA Retrieval QA Embedding 模型执行。手册中的后续示例也按预期运行,我们鼓励您探索这些选项。 提示: 我们建议将 Mixtral 用于内部推理(即指令遵循以进行数据提取、工具选择等),将 Llama-Chat 用于单个最终“根据历史和上下文为该用户提供简单响应”的“总结”响应。以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。