使用 RAG 和 LLM 与您的数据库对话

本文介绍了如何结合检索增强生成(RAG)和大型语言模型(LLM)从数据库检索上下文信息,以创建更准确的响应。通过Langchain连接到SQL数据库,演示了一个针对就业市场的定制QA聊天机器人的构建过程,展示RAG如何弥补LLM在领域知识上的不足,提供更好的用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

什么是RAG?

检索增强生成 (RAG) 涉及从外部数据库获取当前或上下文相关信息,并在请求大型语言模型 (LLM) 生成响应时将其呈现给大型语言模型 (LLM) 的过程。这种方法有效地解决了生成不正确或误导性信息的问题。您能够存储专有业务数据或全局知识,并使您的应用程序能够在响应生成阶段为 LLM 检索此数据。

它有什么帮助?

LLM 缺乏领域知识,但我们可以通过利用 RAG 从数据库中检索上下文信息并将其与用户输入一起传递给 LLM 并生成丰富的相关响应来填补这一空白。

在本文中,我们将了解如何使用 LangChain 连接到我们的 SQL 数据库、检索上下文信息、将用户查询和上下文一起传递给 LLM 并生成准确的响应。

案例概览

我们将为职业介绍所构建一个定制的 QA 聊天机器人,帮助用户获取就业市场的相关信息。用户可能想了解热门职位、特定角色在特定领域的受欢迎程度等。

我们使用 Langchain 作为框架、MySQL 数据库和 OpenAI 的 LLM 来构建我们的应用程序。

我们的数据库由一个包含以下列的表组成:

### RAG 检索增强生成 LLM 大语言模型的关系 RAG(检索增强生成) LLM(大语言模型)之间的关系可以被理解为一种协同作用。LLM 是通过大规模数据训练而来的通用语言模型,具备强大的语言理解生成能力[^1]。然而,在特定领域或实时更新的知识需求下,LLM 可能会面临知识过时或缺乏最新信息的问题。此时,RAG 技术作为一种补充手段应运而生。 RAG 通过引入外部知识源来弥补 LLM 的不足。具体而言,RAG 将检索到的相关文档片段整合到生成流程中,从而使得生成的回答更加精准、可靠且具有时效性[^2]。这种机制不仅提升了回答的质量,还增强了模型对于新知识的学习能力适应性。 --- ### RAG LLM 的主要区别 #### 数据来源 - **LLM**: 主要依赖于预训练阶段所学习的大规模语料库,这些数据通常是静态的,并且在模型发布之后不再更新。 - **RAG**: 动态地从外部数据库或其他资源中获取最新的上下文信息,能够即时反映当前事件或专业知识的变化。 #### 计算复杂度 - **LLM**: 单纯依靠自身的参数进行推理,计算成本较高,尤其是在面对大量输入时可能会变得低效。 - **RAG**: 需要在检索阶段额外消耗一定的开销用于查询相关资料;但是由于只针对少量高相关性的内容建模,整体效率反而有所提升[^3]。 #### 应用灵活性 - **LLM**: 更适合开放域的任务,比如自由对话、创意写作等不需要严格事实依据的应用场景。 - **RAG**: 特别适用于封闭式问答或者需要高度精确性权威支持的企业级解决方案,例如客服机器人、医疗咨询等领域。 --- ### RAG LLM 的典型应用场景 | 场景 | 描述 | |--------------------------|----------------------------------------------------------------------------------------| | 开放式文本创作 | 利用 LLM 自由发挥创造力完成诗歌撰写、小说续写等工作 | | 实时新闻摘要 | 结合 RAG 提取最近发生的热点资讯并自动生成简洁明了的小结 | | 法律文件解析 | 基于 RAG 查找判例法条并之关联解释 | | 科技研发辅助 | 运用 RAG 快速定位前沿论文技术报告 | 以下是基于 Python 编写的简单 RAG 流程示意代码: ```python from transformers import pipeline, RagTokenizer, RagTokenForGeneration import faiss def initialize_rag_model(): tokenizer = RagTokenizer.from_pretrained("facebook/rag-token-nq") model = RagTokenForGeneration.from_pretrained("facebook/rag-token-nq") return tokenizer, model tokenizer, rag_model = initialize_rag_model() context_documents = ["Document A", "Document B"] # Example contexts query = "What is the relationship between RAG and LLM?" input_ids = tokenizer(query, return_tensors="pt").input_ids generated_text = rag_model.generate(input_ids=input_ids) print(tokenizer.decode(generated_text.squeeze(), skip_special_tokens=True)) ``` 此脚本展示了如何加载 Facebook 提供的标准 RAG 模型并通过给定问题返回融合背景材料后的答案。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知识大胖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值