返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

【深入浅出RAG】让 GPU 飞起来,LangChain

[复制链接]
链载Ai 显示全部楼层 发表于 昨天 10:25 |阅读模式 打印 上一主题 下一主题


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后的主要好处和操作步骤概述:

优势概述

  1. 完全自托管: 数据隐私得到极大保障,因为所有发送至NVIDIA模型的数据都保留在用户自己的系统内。这对于涉及敏感信息的检索增强生成(RAG)应用尤为重要。

  2. 预构建容器: NIM提供了多种预配置的容器,使得开发者能够迅速采用最新的生成式AI模型,减少了从头开始配置模型的复杂度和时间成本。

  3. 可扩展性: 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进行集成的简要步骤示例:

  • 安装集成包:

    首先,通过运行 pip install langchain_nvidia_ai_endpoints 安装特定的NVIDIA NIM集成包。

pipinstalllangchain-communitylangchain-text-splittersfaiss-cpu


  • 加载数据: 使用如 WebBaseLoader 从指定URL加载文档,例如加载LangSmith的用户指南文档。

fromlangchain_community.document_loadersimportWebBaseLoaderloader=WebBaseLoader("https://docs.smith.langchain.com/user_guide")docs=loader.load()


  • 初始化嵌入模型: 利用 NVIDIAEmbeddings 初始化一个适合GPU优化的嵌入模型。在对文档进行索引之前,我们可以初始化我们的嵌入模型。

fromlangchain_nvidia_ai_endpointsimportNVIDIAEmbeddingsembeddings=NVIDIAEmbeddings()


  • 文档处理与索引: 将文档分割成合适的块,并使用FAISS创建向量存储,以便高效检索。现在,我们可以使用 FAISS 向量存储执行索引步骤。

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()


  • 初始化LLM: 使用 ChatNVIDIA 类初始化一个大模型,例如 "mistral_7b",并设置相应的输出解析器。

fromlangchain_core.promptsimportChatPromptTemplatefromlangchain_nvidia_ai_endpointsimportChatNVIDIAfromlangchain_core.output_parsersimportStrOutputParsermodel=ChatNVIDIA(model="mistral_7b")


  • 构建假设文档生成器: 创建一个链式组件,它结合了提示模板、LLM和输出解析器,用于生成与查询相关的假设文档。

hyde_template="""即使你不知道完整的答案,也请生成一个段落的假设答案来回答下面的问题:{question}"""hyde_prompt=ChatPromptTemplate.from_template(hyde_template)hyde_query_transformer=hyde_prompt|model|StrOutputParser()
  • 组合检索与回答链: 最终,将上述组件整合为一个完整的链,该链首先生成假设文档,然后基于此文档和其他检索到的信息回答问题。通过流式处理(stream)功能,可以实现实时的交互式答案生成。

然后我们可以将这个链和原始检索器包装成一个新的链: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 的浪潮中乘风破浪!

觉得我的文章对你有帮助的话,请不要吝啬你的点赞、在看和转发~


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ