LangChain 实战课
黄佳
新加坡科研局首席研究员
8120 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 28 讲
结束语 & 结课测试 (2讲)
LangChain 实战课
15
15
1.0x
00:00/00:00
登录|注册

16|连接数据库:通过链和代理查询鲜花信息

你好,我是黄佳,欢迎来到 LangChain 实战课!
一直以来,在计算机编程和数据库管理领域,所有的操作都需要通过严格、专业且结构化的语法来完成。这就是结构化查询语言(SQL)。当你想从一个数据库中提取信息或进行某种操作时,你需要使用这种特定的语言明确地告诉计算机你的要求。这不仅需要我们深入了解正在使用的技术,还需要对所操作的数据有充分的了解。
图片来源网络
你需要拥有一个程序员基本的技能和知识才能有效地与计算机交互。不过,随着人工智能的兴起和大语言模型的发展,情况开始发生变化。
现在,我们正进入一个全新的编程范式,其中机器学习和自然语言处理技术使得与计算机的交互变得更加自然。这意味着,我们可以用更加接近我们日常话语的自然语言来与计算机交流。例如,不用复杂的 SQL 语句查询数据库,我们可以简单地问:“请告诉我去年的销售额是多少?” 计算机能够理解这个问题,并给出相应的答案。
这种转变不仅使得非技术人员更容易与计算机交互,还为开发者提供了更大的便利性。简而言之,我们从“告诉计算机每一步怎么做”,转变为“告诉计算机我们想要什么”,整个过程变得更加人性化和高效。

新的数据库查询范式

下面这个图,非常清晰地解释了这个以 LLM 为驱动引擎,从自然语言的(模糊)询问,到自然语言的查询结果输出的流程。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了一种新的数据库查询范式,结合了自然语言处理和传统数据库查询的功能。首先讨论了传统的SQL查询语言,然后介绍了机器学习和自然语言处理技术的发展,使得与计算机的交互变得更加自然。接着详细解释了新的数据库查询范式的工作流程,包括用户提出问题、LLM理解并转译、执行SQL查询、LLM接收并解释结果以及提供答案的过程。给出了实战案例背景信息,说明了通过LangChain实现新的数据库应用开发范式的意义和应用场景。介绍了创建数据库表和用Chain查询数据库的具体操作步骤,并展示了相应的代码示例。总结了SQLDatabaseChain调用大语言模型,完美地完成了从自然语言到自然语言的新型SQL查询。最后强调了这种新范式的意义和挑战,以及技术变革的时刻。整体而言,本文展示了一种新的数据库查询范式,以及其在实际应用中的潜力和便利性。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《LangChain 实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(10)

  • 最新
  • 精选
  • even
    老师,你好。请问如何对多数据库的多表进行查询,这块的工作方便详细介绍下吗?

    作者回复: 这个问题同学问了两次。可惜我也不是数据库方面的专家。我试着问LLM,给出的回答如下: 1. 使用多数据库查询工具。一些ORM框架如SQLAlchemy支持跨数据库查询。或者可以使用像Ditto这样的多数据库查询工具。 2. 将不同数据库的数据同步到一个数据库,然后在一个数据库中进行查询。可以使用工具实现数据库之间的数据同步。 3. 使用消息队列进行异步查询。将查询任务发布到消息队列,不同数据库各自监听并查询,最后聚合结果。 4. 查询服务化。将每个数据库封装为查询服务,在应用中调用这些服务然后聚合结果。 因为没有相关经验,我并不知道上面的答案有多大帮助。希望有经验的同学帮助回答一下。

    2023-10-19归属地:广东
    2
    5
  • 远游
    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
收起评论
显示
设置
留言
10
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部