16|连接数据库:通过链和代理查询鲜花信息
新的数据库查询范式
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了一种新的数据库查询范式,结合了自然语言处理和传统数据库查询的功能。首先讨论了传统的SQL查询语言,然后介绍了机器学习和自然语言处理技术的发展,使得与计算机的交互变得更加自然。接着详细解释了新的数据库查询范式的工作流程,包括用户提出问题、LLM理解并转译、执行SQL查询、LLM接收并解释结果以及提供答案的过程。给出了实战案例背景信息,说明了通过LangChain实现新的数据库应用开发范式的意义和应用场景。介绍了创建数据库表和用Chain查询数据库的具体操作步骤,并展示了相应的代码示例。总结了SQLDatabaseChain调用大语言模型,完美地完成了从自然语言到自然语言的新型SQL查询。最后强调了这种新范式的意义和挑战,以及技术变革的时刻。整体而言,本文展示了一种新的数据库查询范式,以及其在实际应用中的潜力和便利性。
《LangChain 实战课》,新⼈⾸单¥59
全部留言(10)
- 最新
- 精选
- even老师,你好。请问如何对多数据库的多表进行查询,这块的工作方便详细介绍下吗?
作者回复: 这个问题同学问了两次。可惜我也不是数据库方面的专家。我试着问LLM,给出的回答如下: 1. 使用多数据库查询工具。一些ORM框架如SQLAlchemy支持跨数据库查询。或者可以使用像Ditto这样的多数据库查询工具。 2. 将不同数据库的数据同步到一个数据库,然后在一个数据库中进行查询。可以使用工具实现数据库之间的数据同步。 3. 使用消息队列进行异步查询。将查询任务发布到消息队列,不同数据库各自监听并查询,最后聚合结果。 4. 查询服务化。将每个数据库封装为查询服务,在应用中调用这些服务然后聚合结果。 因为没有相关经验,我并不知道上面的答案有多大帮助。希望有经验的同学帮助回答一下。
2023-10-19归属地:广东25 - 远游Chain 和 Agent 来查询数据库,这两种方式有什么异同? 高铁上,没有环境运行查看Prompt,以下靠猜哈 1、Chain采用一轮对话得到结果,意味着如果表多时,会发送很多表的schema到llm,一个是浪费token,一个是可能超长。 2、Agent采用ReAct方式逐步推理执行,多轮对话得到结果,一个是准确性高,一个是只需将上轮对话推理出来的需要的表的schema发送到服务端,节省token的同时避免token超出。 这引起了另外一个极端场景的思考,如果需要3表甚至更多表联查,且这3表都有上百个字段(在大型业务系统如ERP这并不夸张),可能还是会导致token超长。 等有环境跑一下看看Prompt和对话轮次验证一下猜想~
作者回复: 对,可以跑一下复杂场景试试。
2023-10-29归属地:北京3 - even老师,请问多数据库,多表如何去做,有没有相关的最佳实践和参考资料
作者回复: 原理和步骤是完全一样的呀。如何处理单表,就一样的去问LLM在多表中查询就好了。注意,这个功能目前只是实验性质的,不能真正的取代SQL语句。
2023-10-19归属地:广东1 - hello老师,请教一个问题,一般的基础模型都具备一定的SQL能力,感觉用SQLDatabaseChain/SQL Agent并没有什么优势,老师能否帮忙解答下,为啥还会出现类SQLDatabaseChain/SQL Agent等工具来解决文本转SQL的能力?
作者回复: 同学说的对哈,这个功能只是LangChain的实验性功能的一部分。说白了,是探索性的,不是部署到生产系统的功能。 LangChain在GitHub上已经做了说明了(如下)。当然了,LangChain作为一个LLM框架,什么功能都想支持,也从风险投资公司红杉资本那里筹集了超过 2000 万美元的资金,估值至少为 2 亿美元。LangChain的野心还是很大的,不够功能做的好不好,也要先有这个功能。包括RAG,也有竞争者的。我们作为开发人员,特定的功能可以随意选择更好的框架。 🚨 2023 年 7 月 28 日对选择链 (SQLDatabase) 进行的重大更改为了变得langchain更精简、更安全,我们正在将一些链转移到langchain_experimental. 此迁移已经开始,但我们将保持向后兼容直到 7 月 28 日。在那一天,我们将从 中删除功能langchain。请在此处阅读有关动机和进展的更多信息。在此处阅读如何迁移您的代码。 🚨Breaking Changes for select chains (SQLDatabase) on 7/28/23 In an effort to make langchain leaner and safer, we are moving select chains to langchain_experimental. This migration has already started, but we are remaining backwards compatible until 7/28. On that date, we will remove functionality from langchain. Read more about the motivation and the progress here. Read how to migrate your code here.
2023-10-16归属地:湖南1 - 悟尘老师,我想使用上述范式,使用LangChain框架让ES和LLM结合,然后实现搜索(根据指定条件)、推荐(根据指定关键词)、排序的功能,该分哪几个步骤实现?
作者回复: 我非专家,随便写写,抛砖引玉: (下面内容含有GPT辅助生成) 1. 数据准备与索引建立: 首先,确保你有一个结构化的数据集,它可以是文本、图像或其他形式的数据。使用Elasticsearch建立数据索引。这涉及到定义数据的映射(mapping)和索引(indexing)过程。 2. 集成LangChain与ES: LangChain可以将语言模型的输出作为ES查询的输入。在LangChain中,配置ES的连接和相关的查询设置。 ----- 这里可能需要进一步看LangChain的文档 3. 定义搜索、推荐和排序逻辑: 搜索:定义如何将用户的查询转换为ES可理解的格式。这可能涉及到使用语言模型来解析查询的意图和上下文。 推荐:基于指定的关键词,使用语言模型来生成与这些关键词相关的查询,然后将这些查询发送到ES。 排序:定义一个排序逻辑,可能基于搜索结果的相关性、日期、用户偏好等因素。 4. 集成语言模型进行增强处理: 使用LangChain调用大型语言模型来增强搜索和推荐的效果。这可能包括理解复杂的查询、生成更精确的关键词等。 上述步骤具体是否合适,我们可以进一步讨论。
2023-11-12归属地:北京 - 悟尘老师,如何使LLM理解我当前的表的字段以及表关系呢?用什么方式告诉LLM,从而使它能够理解我的业务背景?
作者回复: 嗯嗯,很好的问题。这些内容可以通过Prompt来输入给LLM。另一个思路是把大量的信息用向量的形式存储在Vector Store里面,需要的时候摘出来。
2023-11-12归属地:北京 - Geek_7ee455老师这种sql查询的问答和文档问答怎么结合起来用呢
作者回复: 这就根据业务场景需要来设计你的Pipeline,同学给个需求看看?
2023-11-09归属地:浙江 - Monin老师 咨询下 对于一些业务表如mysql等含有相似业务语义的表很多 在LLM执行业务SQL时有时会定位到错误的表 有什么好的解法让agent既返回最终的结果 同时也把执行的SQL语句也返回?
作者回复: LangChain给出的日志里面应该是把每一个LLM生成的SQL语句都输出了的。
2023-10-25归属地:上海4 - 陈东老师好。如何本地化部署langchain和agent,可以随时交互呢?课程中都是在一个回合的对话,如何展开持续的多个对话?谢谢老师的指引和解答。
作者回复: 同学好。多轮对话的实现主要是依靠总结和记忆机制, 我们的最后一个实战会给出多轮对话的示例和部署。当然你也可以用本地缓存先前对话的方式设计出更复杂的Chatbot系统。我们这里没有过多深入研究这个部分。
2023-10-15归属地:广西 - 黄佳代码已经更新,https://github.com/huangjia2019/langchain 祝同学们学习愉快,多多分享LangChain学习心得感悟。众人拾材火焰高!2023-10-13归属地:瑞士1