AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


【深入浅出RAG】让 GPU 飞起来,LangChain & NVIDIA NIM 打造最强 RAG
发布日期:2024-06-27 07:00:57 浏览次数: 1880



大约一年半前,OpenAI 发布了 ChatGPT,真正开启了生成式AI时代。自此以后,我们见证了各种行业和企业对该技术的快速增长及广泛应用。

随着企业将注意力从原型制作LLM(大型语言模型)应用转向生产化部署,它们通常希望从第三方模型服务转向自我托管解决方案。我们看到许多人在这一转变中遇到困难,这也是LangChain对集成全新NVIDIA NIM推理微服务感到兴奋的原因。

1. 什么是 NVIDIA NIM?

NVIDIA NIM是一套易于使用的微服务集合,旨在加速企业内部生成式AI的部署。这个多功能运行时支持广泛的AI模型,从开源社区模型到NVIDIA AI基础模型,乃至定制AI模型。

利用行业标准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不仅支持本地开发环境中的模型运行,还便于将模型部署为高可用的服务,确保了模型服务的稳定性和高性能,与专业托管服务媲美。

2. 如何获得 NVIDIA NIM 的访问权限?

开始使用 NIM 是直接的。在 NVIDIA API 目录中,开发人员可以访问广泛的 AI 模型来构建和部署生成性 AI 应用。NIM 作为 NVIDIA AI Enterprise 的一部分提供,NVIDIA AI Enterprise 是一个端到端的、云原生的软件平台,它简化了生产级 AI 应用的开发和部署。查看这个博客,了解如何开始的逐步指南。

如何使用 LangChain 与 NVIDIA NIM?我们添加了一个新的集成包,支持 NIM。要开始集成,您需要安装我们专用的集成包:

pip install langchain_nvidia_ai_endpoints

之后,您可以像这样导入模型:

from langchain_nvidia_ai_endpoints import NVIDIAEmbeddings,ChatNVIDIA

3. 操作示例

我们将在 LangSmith 文档的一部分上构建一个 RAG 应用。为了使它更有趣,我们将使用一种高级检索方法:假设文档嵌入(HyDE)。HyDE 的动机是搜索查询可能不在与我们检索的文档相同的嵌入空间中。


为了解决这个问题,我们可以使用 LLM 生成一个假设文档,然后检索与该假设文档相似的文档。以下是如何使用NVIDIA NIM与LangChain进行集成的简要步骤示例:

  • 安装集成包:

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

pip install langchain-community langchain-text-splitters faiss-cpu


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

from langchain_community.document_loaders import WebBaseLoaderloader = WebBaseLoader("https://docs.smith.langchain.com/user_guide")docs = loader.load()


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

from langchain_nvidia_ai_endpoints import NVIDIAEmbeddingsembeddings = NVIDIAEmbeddings()


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

from langchain_community.vectorstores import FAISSfrom langchain_text_splitters import RecursiveCharacterTextSplittertext_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",并设置相应的输出解析器。

from langchain_core.prompts import ChatPromptTemplatefrom langchain_nvidia_ai_endpoints import ChatNVIDIAfrom langchain_core.output_parsers import StrOutputParsermodel = ChatNVIDIA(model="mistral_7b")


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

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

然后我们可以将这个链和原始检索器包装成一个新的链:from langchain_core.runnables import chain@chaindef hyde_retriever(question):hypothetical_document = hyde_query_transformer.invoke({"question": question})return retriever.invoke(hypothetical_document)然后我们可以创建一个链,它将检索到的文档和问题结合起来,产生最终答案:template = """只根据以下上下文回答问题:{context}问题:{question}"""prompt = ChatPromptTemplate.from_template(template)answer_chain = prompt | model | StrOutputParser()

现在,我们将创建我们的假设文档生成器。这个链由一个提示、LLM 和一个简单的输出解析器组成。

最后,我们可以将这个与假设文档检索器结合起来,创建一个最终链:

@chaindef final_chain(question):documents = hyde_retriever.invoke(question)for s in answer_chain.stream({"question": question, "context": documents}):yield s

注意我们返回令牌,以便我们可以流式传输这个最终链!让我们尝试一下:

for s in final_chain.stream("how can langsmith help with testing"):print(s, end="")

NIM支持广泛的AI模型,包括开源社区模型、NVIDIA AI基础模型以及自定义AI模型。它利用行业标准API,使得开发者能够快速构建企业级AI应用。NIM基于强大的基础架构,如NVIDIA Triton Inference Server、NVIDIA TensorRT等,确保了大规模AI推理的无缝进行。


欢迎关注我,获取更多关于 AI 技术的前沿资讯。别忘了将今天的内容分享给你的朋友们,让我们一起在 AI 的浪潮中乘风破浪!

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



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询