基于Langchain、ChromaDB和GPT 3.5实现检索增强生成

译者 | 朱先忠

重楼 | 审校

摘要:在本博客中,我们将了解一种名为检索增强生成(retrieval augmented generation)的提示工程技术,并将基于Langchain、ChromaDB和GPT 3.5的组合来实现这种技术。

动机

随着GPT-3等基于转换器的大数据模型的出现,自然语言处理(NLP)领域取得了重大突破。这些语言模型能够生成类似人类的文本,并已有各种各样的应用程序,如聊天机器人、内容生成和翻译等。然而,当涉及到专业化和特定于客户的信息的企业应用场景时,传统的语言模型可能满足不了要求。另一方面,使用新的语料库对这些模型进行微调可能既昂贵又耗时。为了应对这一挑战,我们可以使用一种名为“检索增强生成”(RAG:Retrieval Augmented Generation)的技术。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

基于Langchain、ChromaDB和GPT 3.5实现检索增强生成

在本博客中,我们将探讨这种检索增强生成(RAG)技术是如何工作的,并通过一个实战示例来证明这一技术的有效性。需要说明的是,此实例将使用GPT-3.5 Turbo作为附加语料库对产品手册进行响应。

想象一下,你的任务是开发一个聊天机器人,该机器人可以响应有关特定产品的查询。该产品有自己独特的用户手册,专门针对企业的产品。传统的语言模型,如GPT-3,通常是根据一般数据进行训练的,可能不了解这种特定的产品。另一方面,使用新的语料库对模型进行微调似乎是一种解决方案;然而,此办法会带来相当大的成本和资源需求。

检索增强生成(RAG)简介

检索增强生成(RAG)提供了一种更高效的方法来解决在特定领域生成适当上下文响应的问题。RAG不使用新的语料库对整个语言模型进行微调,而是利用检索的能力按需访问相关信息。通过将检索机制与语言模型相结合,RAG利用外部上下文来增强响应。这个外部上下文可以作为向量嵌入来提供

下面给出了创建本文中应用程序时需要遵循的步骤流程。

阅读Clarett用户手册(PDF格式)并使用1000个令牌的chunk_size进行令牌化。创建这些标记的向量嵌入。我们将使用OpenAIEmbeddings库来创建向量嵌入。将向量嵌入存储在本地。我们将使用简单的ChromaDB作为我们的VectorDB。我们可以使用Pinecone或任何其他更高可用性的生产级的向量数据库VectorDB。用户发出带有查询/问题的提示。这将从VectorDB中进行搜索和检索,以便从VectorDB中获取更多上下文数据。此上下文数据现在将与提示内容一起使用。上下文增强了提示,这通常被称为上下文丰富。提示信息,连同查询/问题和这个增强的上下文,现在被传递给大型语言模型LLM。至此,LLM基于此上下文进行响应。

需要说明的是,在本示例中,我们将使用Focusrite Clarett用户手册作为附加语料库。Focusrite Clarett是一个简单的USB音频接口,用于录制和播放音频。您可以从链接https://fael-downloads-prod.focusrite.com/customer/prod/downloads/Clarett%208Pre%20USB%20User%20Guide%20V2%20English%20-%20EN.pdf处下载使用手册。

实战演练

设置虚拟环境

让我们设置一个虚拟环境来把我们的实现案例封装起来,以避免系统中可能出现的任何版本/库/依赖性冲突。现在,我们执行以下命令来创建一个新的Python虚拟环境:

pip install virtualenvpython3 -m venv ./venvsource venv/bin/activate 

创建OpenAI密钥

接下来,我们将需要一个OpenAI密钥来访问GPT。让我们创建一个OpenAI密钥。您可以通过在链接https://platform.openai.com/apps处注册OpenAI来免费创建OpenAIKey。

注册后,登录并选择API选项,如屏幕截图所示(时间原因所致,当您打开该屏幕设计时可能会与我当前拍摄屏幕截图有所变化)。

基于Langchain、ChromaDB和GPT 3.5实现检索增强生成

然后,转到您的帐户设置并选择“查看API密钥(View API Keys)”:

基于Langchain、ChromaDB和GPT 3.5实现检索增强生成

然后,选择“创建新密钥(Create new secret key)”,你会看到一个弹出窗口,如下图所示。你需要提供一个名称,这将会生成一个密钥。

基于Langchain、ChromaDB和GPT 3.5实现检索增强生成

该操作将生成一个唯一的密钥,您应该将其复制到剪贴板并存储在安全的地方。

基于Langchain、ChromaDB和GPT 3.5实现检索增强生成

接下来,让我们编写Python代码来实现上面流程图中显示的所有步骤。

GPT Detector GPT Detector

在线检查文本是否由GPT-3或ChatGPT生成

GPT Detector 24 查看详情 GPT Detector

安装依赖库

首先,让我们安装我们需要的各种依赖项。我们将使用以下库:

Lanchain:一个开发LLM应用程序的框架。ChromaDB:这是用于持久化向量嵌入的VectorDB。unstructured:用于预处理Word/PDF文档。Tiktoken:Tokenizer框架pypdf:阅读和处理PDF文档的框架openai:访问openai的框架

pip install langchainpip install unstructuredpip install pypdfpip install tiktokenpip install chromadbpip install openai

一旦成功安装了这些依赖项,请创建一个环境变量来存储在最后一步中创建的OpenAI密钥。

export OPENAI_API_KEY=

接下来,让我们开始编程。

从用户手册PDF创建向量嵌入并将其存储在ChromaDB中

在下面的代码中,我们会引入所有需要使用的依赖库和函数

import osimport openaiimport tiktokenimport chromadbfrom langchain.document_loaders import OnlinePDFLoader, UnstructuredPDFLoader, PyPDFLoaderfrom langchain.text_splitter import TokenTextSplitterfrom langchain.memory import ConversationBufferMemoryfrom langchain.embeddings.openai import OpenAIEmbeddingsfrom langchain.vectorstores import Chromafrom langchain.llms import OpenAIfrom langchain.chains import ConversationalRetrievalChain

在下面的代码中,阅读PDF,将文档标记化并拆分为标记。

loader = PyPDFLoader("Clarett.pdf")pdfData = loader.load()text_splitter = TokenTextSplitter(chunk_size=1000, chunk_overlap=0)splitData = text_splitter.split_documents(pdfData)

在下面的代码中,我们将创建一个色度集合,一个用于存储色度数据库的本地目录。然后,我们创建一个向量嵌入并将其存储在ChromaDB数据库中。

collection_name = "clarett_collection"local_directory = "clarett_vect_embedding"persist_directory = os.path.join(os.getcwd(), local_directory)openai_key=os.environ.get('OPENAI_API_KEY')embeddings = OpenAIEmbeddings(openai_api_key=openai_key)vectDB = Chroma.from_documents(splitData, embeddings, collection_name=collection_name, persist_directory=persist_directory )vectDB.persist()

执行此代码后,您应该会看到创建了一个存储向量嵌入的文件夹。

基于Langchain、ChromaDB和GPT 3.5实现检索增强生成

现在,我们将向量嵌入存储在ChromaDB中。下面,让我们使用LangChain中的ConversationalRetrievalChain API来启动聊天历史记录组件。我们将传递由GPT 3.5 Turbo启动的OpenAI对象和我们创建的VectorDB。我们将传递ConversationBufferMemory,它用于存储消息。

memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)chatQA = ConversationalRetrievalChain.from_llm( OpenAI(openai_api_key=openai_key, temperature=0, model_name="gpt-3.5-turbo"),  vectDB.as_retriever(),  memory=memory)

既然我们已经初始化了会话检索链,那么接下来我们就可以使用它进行聊天/问答了。在下面的代码中,我们接受用户输入(问题),直到用户键入“done”。然后,我们将问题传递给LLM以获得回复并打印出来。

chat_history = []qry = ""while qry != 'done': qry = input('Question: ') if qry != exit: response = chatQA({"question": qry, "chat_history": chat_history}) print(response["answer"])

这是输出的屏幕截图。

基于Langchain、ChromaDB和GPT 3.5实现检索增强生成

基于Langchain、ChromaDB和GPT 3.5实现检索增强生成

小结

正如你从本文中所看到的,检索增强生成是一项伟大的技术,它将GPT-3等语言模型的优势与信息检索的能力相结合。通过使用特定于上下文的信息丰富输入,检索增强生成使语言模型能够生成更准确和与上下文相关的响应。在微调可能不实用的企业应用场景中,检索增强生成提供了一种高效、经济高效的解决方案,可以与用户进行量身定制、知情的交互。

译者介绍

朱先忠是51CTO社区的编辑,也是51CTO专家博客和讲师。他还是潍坊一所高校的计算机教师,是自由编程界的老兵

原文标题:Prompt Engineering: Retrieval Augmented Generation(RAG),作者:A B Vijay Kumar

以上就是基于Langchain、ChromaDB和GPT 3.5实现检索增强生成的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/498620.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月8日 19:16:00
下一篇 2025年11月8日 19:20:47

相关推荐

  • 通义千问访问链接 通义千问官方在线入口

    通义千问访问链接是https://tongyi.com/,用户可通过该官网使用其自然语言处理、多轮对话记忆、跨领域知识问答及编程辅助等功能,并支持网页端、电脑客户端、移动App及微信小程序等多端便捷访问。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 …

    2025年12月6日 科技
    000
  • JavaScript中实现词干提取:识别词语基础形态与应用实践

    本文深入探讨了如何在javascript中实现词干提取,以识别词语的各种形态并匹配其基础形式。针对用户输入词语后,需高亮显示其所有变体的需求,文章介绍了porter和lancaster等主流词干提取算法及其在javascript中的实现库。同时,探讨了算法选择、多语言支持的局限性,并提供了相关学习资…

    2025年12月6日 web前端
    000
  • 石墨文档如何实现内容智能推荐_石墨文档AI写作辅助功能

    %ignore_a_1%集成AI技术实现智能推荐与写作辅助,利用NLP与机器学习分析语境,识别主题、风格与目的,实时优化句子通顺度、格式规范与关键词扩展;针对会议纪要、周报等场景推荐模板片段,结合团队协作历史学习写作风格,提升撰写效率与一致性,无缝融入日常协作流程。 石墨文档通过集成AI技术,在文档…

    2025年12月3日 软件教程
    000
  • AI运行MySQL语句的方法是什么_使用AI操作MySQL数据库指南

    AI操作MySQL需将自然语言转为SQL,依赖LLM理解用户意图并结合数据库Schema生成查询,通过API或本地模型执行。典型流程包括:用户输入自然语言指令,AI解析关键信息,匹配数据库结构,生成SQL语句(如多表JOIN、聚合查询),经语法检查与优化后,通过安全连接执行并返回结果。为确保准确性,…

    2025年12月3日 数据库
    000
  • 怎么让AI执行跨数据库SQL_AI操作不同数据库SQL方法

    AI需通过SQL解析、语法转换、多数据库连接与结果整合实现跨库操作。首先利用NLP和AST技术构建SQL知识库,理解不同数据库语法差异;再结合规则与机器学习模型完成SQL语句转换;随后通过数据库连接池或中间件(如SQLAlchemy)连接并执行查询;最后借助ETL工具或联邦查询引擎(如Presto)…

    2025年12月3日 数据库
    000
  • 怎么教AI理解并执行SQL命令_训练AI正确运行SQL语句教程

    答案是通过结合NLP、语义解析与模型迭代,利用高质量“问题-SQL”对和数据库schema训练基于Transformer的模型,并引入执行反馈与错误分析来提升AI生成SQL的准确性与效率。 教AI理解并执行SQL命令,核心在于将其自然语言输入转化为结构化的查询语言,这通常通过结合自然语言处理(NLP…

    2025年12月3日 数据库
    000
  • 如何用AI执行SQLJSON查询_AI操作JSON数据类型方法详解

    AI通过自然语言处理理解用户对JSON数据的查询意图,结合语义映射与上下文推理,智能选择JSON_VALUE、JSON_QUERY或JSON_TABLE等函数生成精准SQL语句,实现从模糊需求到精确查询的转换。 AI执行SQLJSON查询,核心在于它能够理解我们对非结构化或半结构化数据的意图,并将其…

    2025年12月3日 数据库
    000
  • AI自动优化SQL语句的方法是什么_AI优化与执行SQL代码流程

    AI自动优化SQL是通过语义分析、机器学习与强化学习技术,对SQL语句进行查询改写、索引推荐、执行计划预测、参数调优等多阶段智能迭代优化,结合历史数据与实时环境构建闭环工作流,在提升查询性能的同时面临上下文理解、模型更新、可解释性等挑战,需人机协同实现最佳效果。 AI自动优化SQL语句,说到底,就是…

    2025年12月3日 数据库
    000
  • AI执行SQL错误处理的方法_利用AI进行SQL异常处理指南

    AI通过语义理解、模式识别与LLMs技术,实现SQL错误的智能诊断与修复建议。它能解析错误上下文、匹配历史案例、预判潜在问题,并生成优化方案,大幅提升调试效率,降低人工依赖。传统方式受限于碎片化信息与经验驱动,难以应对复杂逻辑与性能瓶颈。而AI可进行预防性检查、跨日志关联分析及查询重构,提供多方案选…

    2025年12月3日 数据库
    000
  • 怎么让AI执行SQL全文检索_AI运行全文索引查询教程

    答案是利用AI结合NLP与数据库技术,将自然语言查询转化为高效SQL全文检索语句。首先通过NLU模型(如BERT)解析用户意图,识别关键词与逻辑关系;随后生成适配数据库的SQL语句,如MySQL的MATCH…AGAINST或SQL Server的CONTAINS;执行查询后以友好方式展示…

    2025年12月3日 数据库
    000
  • SpikingBrain-1.0— 中国科学院推出的类脑脉冲大模型

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 天工大模型 中国首个对标ChatGPT的双千亿级大语言模型 115 查看详情 SpikingBrain-1.0是什么 spikingbrain-1.0(瞬悉 1.0)是由中国科学院自动化研究所研…

    2025年12月2日 科技
    000
  • Yandex官网搜索引擎入口_Yandex免注册快速使用

    Yandex官网搜索引擎入口在https://yandex.com/,用户可直接访问网站使用,无需注册,支持多语言切换及文本、语音、图片等多种搜索方式。 Yandex官网搜索引擎入口在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来Yandex免注册快速使用方法,感兴趣的网友一起随小编来瞧瞧…

    2025年12月2日 电脑教程
    000
  • Tome怎样用叙述流提示自动排版_Tome用叙述流提示自动排版【叙述提示】

    通过输入具有逻辑顺序的叙述性文本,Tome可自动排版生成演示文稿。一、使用自然语言描述结构,如“从问题到解决方案”,系统识别关键节点并分页布局;二、插入含角色与场景的叙事段落,如“产品经理小李发现留存率下降并提出新方案”,触发故事板等可视化模板;三、利用“起初”“随后”“最终”等时间序列词引导生成线…

    2025年12月2日 科技
    000
  • DeepSeek如何用知识图谱答关联问_DeepSeek用知识图谱答关联问【关联问答】

    知识图谱通过构建“实体—关系—实体”三元组的结构化知识库,结合命名实体识别与关系抽取技术,解析用户提问中的关键信息,并利用多跳路径搜索实现复杂关系推理,最终融合上下文生成自然语言回答。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 如果您在…

    2025年12月2日 科技
    000
  • Tome怎样用叙述流自动排版_Tome用叙述流自动排版【自动排版】

    启用叙述流模式后,T%ignore_a_1%me可根据语义自动调整排版:1. 创建页面并开启叙述流;2. 使用#、##、-等符号输入标题、子标题和列表;3. 插入图片或视频触发智能图文布局;4. 利用AI优化功能调整段落结构并同步更新样式。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费…

    2025年12月2日 科技
    000
  • Copy.ai怎样用受众定位提示精准_Copy.ai用受众定位提示精准【受众提示】

    要提升Copy.ai内容的针对性,需精准设置受众提示。一、输入具体人口信息如年龄、地域、职业,避免模糊描述;二、补充心理与行为特征,如环保偏好、购买场景及痛点;三、设定使用情境与沟通语气,增强代入感;四、对比不同受众设定下的输出,优选更匹配营销目标的版本进行优化。 ☞☞☞AI 智能聊天, 问答助手,…

    2025年12月2日 科技
    000
  • Tome怎样用强调词提示突出重点_Tome用强调词提示突出重点【强调提示】

    通过加粗、高亮、符号和彩色字体四种方式可在Tome中突出关键信息:一、选中文本点击B按钮加粗;二、用黄色等醒目的背景色高亮重点内容;三、在文字旁添加!或*等符号或图标强化提示;四、使用红色等高饱和度颜色设置字体,增强视觉锚点,提升信息传达效率。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, …

    2025年12月2日 科技
    000
  • Yandex中国用户专用入口_优化访问速度的Yandex链接

    Yandex中国用户专用入口是https://yandex.com/,该链接提供高效搜索、多样化服务整合及技术性能优势,优化访问速度并支持多语言。 Yandex中国用户专用入口在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来优化访问速度的Yandex链接,感兴趣的网友一起随小编来瞧瞧吧! …

    2025年12月2日 电脑教程
    000
  • AI执行SQL外键操作怎么做_利用AI处理外键约束方法

    AI通过分析数据模式、命名规则和内容相似性,推荐外键关系并预测完整性风险,辅助验证、优化性能及生成脚本,提升数据库设计效率与数据一致性。 AI在SQL外键操作中,并非直接替代数据库引擎执行诸如 ALTER TABLE 或 DELETE CASCADE 这样的指令。它更像是一个智能的辅助系统,通过分析…

    2025年12月2日 数据库
    000
  • Google引擎免费直链入口 Google搜索无需登录快速地址

    Google引擎不仅是解决日常疑问的得力助手,更是学术研究、工作查询和探索未知领域不可或缺的工具。一个优秀的搜索引擎能够深刻理解用户的查询意图,从浩瀚的互联网海洋中筛选出最相关、最权威的内容,极大地提升了我们获取信息的效率和质量,让我们能够轻松地站在巨人的肩膀上,洞察世界。 一、官方直达入口 Goo…

    2025年12月2日 电脑教程
    000

发表回复

登录后才能评论
关注微信