|
ingFang SC", miui, "Hiragino Sans GB", "Microsoft Yahei", sans-serif;font-size: 14px;letter-spacing: 0.5px;text-align: start;background-color: rgb(255, 255, 255);white-space: pre-wrap !important;word-break: break-word !important;">大约一年半前,OpenAI 发布了 ChatGPT,真正开启了生成式AI时代。自此以后,我们见证了各种行业和企业对该技术的快速增长及广泛应用。ingFang SC", miui, "Hiragino Sans GB", "Microsoft Yahei", sans-serif;font-size: 14px;letter-spacing: 0.5px;text-align: start;background-color: rgb(255, 255, 255);white-space: pre-wrap !important;word-break: break-word !important;">随着企业将注意力从原型制作LLM(大型语言模型)应用转向生产化部署,它们通常希望从第三方模型服务转向自我托管解决方案。我们看到许多人在这一转变中遇到困难,这也是LangChain对集成全新NVIDIA NIM推理微服务感到兴奋的原因。ingFang SC", miui, "Hiragino Sans GB", "Microsoft Yahei", sans-serif;font-size: 14px;letter-spacing: 0.5px;text-align: start;background-color: rgb(255, 255, 255);white-space: pre-wrap !important;word-break: break-word !important;">1. 什么是 NVIDIA NIM?ingFang SC", miui, "Hiragino Sans GB", "Microsoft Yahei", sans-serif;letter-spacing: 0.5px;text-align: start;background-color: rgb(255, 255, 255);white-space: pre-wrap !important;word-break: break-word !important;">NVIDIA NIM是一套易于使用的微服务集合,旨在加速企业内部生成式AI的部署。这个多功能运行时支持广泛的AI模型,从开源社区模型到NVIDIA AI基础模型,乃至定制AI模型。ingFang SC", miui, "Hiragino Sans GB", "Microsoft Yahei", sans-serif;letter-spacing: 0.5px;text-align: start;background-color: rgb(255, 255, 255);white-space: pre-wrap !important;word-break: break-word !important;">利用行业标准API,开发者只需几行代码就能快速构建企业级AI应用程序。NIM建立在强大的基础之上,包括NVIDIA Triton推理服务器、NVIDIA TensorRT、NVIDIA TensorRT-LLM和PyTorch等推理引擎,旨在实现无缝的大规模AI推理,确保你可以在任何地方自信地部署AI应用程序,无论是在本地还是云端。NIM是实现大规模加速生成式AI推理的最快方式。NVIDIA NIM 的整合为 LangChain 带来了显著的优势,特别是在生产环境中部署基于大型语言模型(LLM)的应用程序时。以下是整合NVIDIA NIM后的主要好处和操作步骤概述: 优势概述完全自托管: 数据隐私得到极大保障,因为所有发送至NVIDIA模型的数据都保留在用户自己的系统内。这对于涉及敏感信息的检索增强生成(RAG)应用尤为重要。 预构建容器: NIM提供了多种预配置的容器,使得开发者能够迅速采用最新的生成式AI模型,减少了从头开始配置模型的复杂度和时间成本。 可扩展性: NIM不仅支持本地开发环境中的模型运行,还便于将模型部署为高可用的服务,确保了模型服务的稳定性和高性能,与专业托管服务媲美。 ingFang SC", miui, "Hiragino Sans GB", "Microsoft Yahei", sans-serif;font-size: 14px;letter-spacing: 0.5px;text-align: start;background-color: rgb(255, 255, 255);white-space: pre-wrap !important;word-break: break-word !important;">ingFang SC", miui, "Hiragino Sans GB", "Microsoft Yahei", sans-serif;font-size: 14px;letter-spacing: 0.5px;text-align: start;background-color: rgb(255, 255, 255);white-space: pre-wrap !important;word-break: break-word !important;">2. 如何获得 NVIDIA NIM 的访问权限?ingFang SC", miui, "Hiragino Sans GB", "Microsoft Yahei", sans-serif;letter-spacing: 0.5px;text-align: start;background-color: rgb(255, 255, 255);white-space: pre-wrap !important;word-break: break-word !important;">开始使用 NIM 是直接的。在 NVIDIA API 目录中,开发人员可以访问广泛的 AI 模型来构建和部署生成性 AI 应用。NIM 作为 NVIDIA AI Enterprise 的一部分提供,NVIDIA AI Enterprise 是一个端到端的、云原生的软件平台,它简化了生产级 AI 应用的开发和部署。查看这个博客,了解如何开始的逐步指南。ingFang SC", miui, "Hiragino Sans GB", "Microsoft Yahei", sans-serif;font-size: 14px;letter-spacing: 0.5px;text-align: start;background-color: rgb(255, 255, 255);white-space: pre-wrap !important;word-break: break-word !important;">如何使用 LangChain 与 NVIDIA NIM?我们添加了一个新的集成包,支持 NIM。要开始集成,您需要安装我们专用的集成包:pipinstalllangchain_nvidia_ai_endpoints ingFang SC", miui, "Hiragino Sans GB", "Microsoft Yahei", sans-serif;font-size: 14px;letter-spacing: 0.5px;text-align: start;background-color: rgb(255, 255, 255);white-space: pre-wrap !important;word-break: break-word !important;">之后,您可以像这样导入模型:fromlangchain_nvidia_ai_endpointsimportNVIDIAEmbeddings,ChatNVIDIA 3. 操作示例我们将在 LangSmith 文档的一部分上构建一个 RAG 应用。为了使它更有趣,我们将使用一种高级检索方法:假设文档嵌入(HyDE)。HyDE 的动机是搜索查询可能不在与我们检索的文档相同的嵌入空间中。
为了解决这个问题,我们可以使用 LLM 生成一个假设文档,然后检索与该假设文档相似的文档。以下是如何使用NVIDIA NIM与LangChain进行集成的简要步骤示例: pipinstalllangchain-communitylangchain-text-splittersfaiss-cpu
fromlangchain_community.document_loadersimportWebBaseLoaderloader=WebBaseLoader("https://docs.smith.langchain.com/user_guide")docs=loader.load()
fromlangchain_nvidia_ai_endpointsimportNVIDIAEmbeddingsembeddings=NVIDIAEmbeddings()
fromlangchain_community.vectorstoresimportFAISSfromlangchain_text_splittersimportRecursiveCharacterTextSplittertext_splitter=RecursiveCharacterTextSplitter(chunk_size=500,chunk_overlap=50)documents=text_splitter.split_documents(docs)vector=FAISS.from_documents(documents,embeddings)retriever=vector.as_retriever()
fromlangchain_core.promptsimportChatPromptTemplatefromlangchain_nvidia_ai_endpointsimportChatNVIDIAfromlangchain_core.output_parsersimportStrOutputParsermodel=ChatNVIDIA(model="mistral_7b")
hyde_template="""即使你不知道完整的答案,也请生成一个段落的假设答案来回答下面的问题:{question}"""hyde_prompt=ChatPromptTemplate.from_template(hyde_template)hyde_query_transformer=hyde_prompt|model|StrOutputParser()然后我们可以将这个链和原始检索器包装成一个新的链:fromlangchain_core.runnablesimportchain@chaindefhyde_retriever(question):hypothetical_document=hyde_query_transformer.invoke({"question":question})returnretriever.invoke(hypothetical_document)然后我们可以创建一个链,它将检索到的文档和问题结合起来,产生最终答案:template="""只根据以下上下文回答问题:{context}问题:{question}"""prompt=ChatPromptTemplate.from_template(template)answer_chain=prompt|model|StrOutputParser()现在,我们将创建我们的假设文档生成器。这个链由一个提示、LLM 和一个简单的输出解析器组成。 最后,我们可以将这个与假设文档检索器结合起来,创建一个最终链: @chaindeffinal_chain(question):documents=hyde_retriever.invoke(question)forsinanswer_chain.stream({"question":question,"context":documents}):yields注意我们返回令牌,以便我们可以流式传输这个最终链!让我们尝试一下: forsinfinal_chain.stream("howcanlangsmithhelpwithtesting"):print(s,end="")NIM支持广泛的AI模型,包括开源社区模型、NVIDIA AI基础模型以及自定义AI模型。它利用行业标准API,使得开发者能够快速构建企业级AI应用。NIM基于强大的基础架构,如NVIDIA Triton Inference Server、NVIDIA TensorRT等,确保了大规模AI推理的无缝进行。
欢迎关注我,获取更多关于 AI 技术的前沿资讯。别忘了将今天的内容分享给你的朋友们,让我们一起在 AI 的浪潮中乘风破浪! 觉得我的文章对你有帮助的话,请不要吝啬你的点赞、在看和转发~
|