零基础构建基于LangChain的聊天机器人(3)

检索对象

review_chain的目标是回答有关患者在医院就医体验的问题。到目前为止,已经将患者对医院的评论作为问题的上下文。虽然能回答少量问题,但它不具有很好的扩展性。此外,即使将所有评论放入模型的上下文中,也不能保证它使用正确的评论内容回答问题。

为了克服这个问题,通常需要需要一个检索器。检索相关文档并将它们传给语言模型,用以回答问题,这个过程称为检索增强生成(retrieval-augmented generation, RAG)。

对于这个例子,将把所有评论数据存储在一个名为ChromaDB的向量数据库中。用以下命令安装ChromaDB:

(venv) $ python -m pip install chromadb==0.4.22

安装之后,用以下代码创建一个带有患者评论的ChromaDB向量数据库:

在这里插入图片描述

在 2 到 4 行中,导入了创建向量数据库所需的依赖项。然后定义 REVIEWS_CSV_PATHREVIEWS_CHROMA_PATH ,它们分别是存储原始评论数据的路径和向量数据库存储数据的路径。

稍后会了解医院系统数据的概览,其中 reviews.csv 存储了患者评论。reviews.csv 中的 review 列是一个字符串,包含了患者的评论。

在 11 和 12 行中,使用 LangChain 的 CSVLoader 加载评论。在 14 到 16 行中,使用默认的OpenAI嵌入模型从评论中创建一个ChromaDB实例,并将评论嵌入存储在 REVIEWS_CHROMA_PATH 中。

接下来,在终端中运行以下命令,从项目目录开始:

(venv) $ python langchain_intro/create_retriever.py

它应该只需要一分钟或更短时间就可以运行,之后就可以开始对评论嵌入执行语义搜索:

在这里插入图片描述
在这里插入图片描述

导入了调用ChromaDB所需的依赖项,并指定了存储ChromaDB数据的路径 REVIEWS_CHROMA_PATH 。然后使用dotenv.load_dotenv() 加载环境变量,并创建了一个新的 Chroma 实例,指向向量数据库。注意,当连接到向量数据库时,必须再次指定嵌入函数。确保与用来创建嵌入的嵌入函数相同。

接下来,定义一个问题,并在 reviews_vector_db 上调用 .similarity_search() ,其参数为 questionk=3。这为问题创建了一个嵌入,并在向量数据库中搜索与问题最相似的三个评论。在这种情况下,会看到三个评论输出。

最后一件事是将刚才所编写的评论检索器添加到 review_chain 中,以便将相关评论作为上下文传递给提示。

在这里插入图片描述

像以前一样,导入了ChromaDB的依赖项,指定了ChromaDB数据的路径,并实例化了一个新的Chroma对象。然后通过在 reviews_vector_db 上调用 .as_retriever() 创建了 review_retriever ,这就是即将添加到 review_chain 的检索器对象。因为指定了 k=10 ,检索器将获取与用户问题最相似的十个评论。

然后在 review_chain 的前面添加了一个带有上下文和问题键的字典。而不是手动传递上下文,review_chain 将把问题传递给检索器以获取相关评论。将问题分配给一个 RunnablePassthrough 对象确保问题不变地传递到链的下一步。

现在有了一个完全功能的链,可以根据评论回答有关患者体验的问题。启动一个新的REPL会话并尝试一下:

在这里插入图片描述

如上操作,只需要调用 review_chain.invoke(question) 就可以获得有关患者体验的检索增强答案。稍后还将通过在Neo4j 中存储评论以及其他元数据来改进这个链。

现在你了解了聊天模型、提示、链和检索,接下来会深入了解LangChain的最后一个概念——代理。

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/845730.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT天气预报项目(写在简历上)

一、ui设计 实现功能:可以搜索不同的城市进行天气的查询,并且显示未来7天内的天气,并绘制出当天的最高气温和最低气温曲线图。 学到的知识: stylesheet界面美化 Json数据解析 HTTP通信get请求 使用事件过滤器绘制温度曲线 多控件处理(利用数组) 代码整合调试能力 二…

线程思维导图

列出线程所有知识的框架结构,帮助理解线程相关知识,有更好的知识体系 Java相关进阶知识 多线程相关知识,超详细,易懂

Webrtc支持HEVC之Mediasoup SDP协商编码流程(三)

一、SDP校验 1、服务端的rtp能力配置 文件位置:cst-medias-server/core/config.js 具体内容:moduls.export-mediasoup-routerOpitions-mediaCodeces 注意事项:对于音视频codec,clinet只会使用第一个识别到的codec,…

windows上进行git初始化时报错:fatal: unknown write failure on standard output

一、报错描述 1、git init命令一般是在命令行,切换到项目的根目录后执行 2、如果是windows的系统,我们粘贴路径时,需要进行转义命令行才能识别, 也就是像我下面写的 D:\\Users\\...3、报错信息进行解读 一般情况下,…

Pytorch-Lighting使用教程(MNIST为例)

一、pytorch-lighting简介 1.1 pytorch-lighting是什么 pytorch-lighting(简称pl),基于 PyTorch 的框架。它的核心思想是,将学术代码(模型定义、前向 / 反向、优化器、验证等)与工程代码(for-…

C++学习之避免使用野指针

现有结构体struct_a和struct_b,其中struct_b中包含struct_a指针作为成员变量。先基于struct_a定义一个变量a_ptr,之后定义一个struct_b指针变量b_ptr,并将a_ptr赋值给b_ptr中的struct_a类型变量。之后释放b_ptr, 那么a_ptr指向的内…

红队内网攻防渗透:内网渗透之windows内网权限提升技术:工具篇

红队内网攻防渗透 1. 内网权限提升技术1.1 windows内网权限提升技术--工具篇1.1.1 Web到Win系统提权-平台&语言&用户1.1.1.1 Web搭建平台差异1.1.1.2 Web语言权限差异1.1.1.3 系统用户权限差异1.1.2 Web到Win系统提权-Windows 2012宝塔面板-哥斯拉1.1.2.1 环境条件:1.…

Anthropic公司CEO谈AI发展:Cluade安全超过商业利益

Anthropic公司今年3月发布的超越GPT-4模型Claude3 opus,成功吸引了大量GPT-4用户“叛变”。 作为OpenAI的头号劲敌,Claude3发布方Anthropic公司的联合创始人兼CEO,达里奥阿莫迪(DarioAmodei)承诺:在能够制…

生信分析进阶4 - 比对结果的FLAG和CIGAR信息含义与BAM文件指定区域提取

BAM文件时存储比对数据的常用格式,可用于短reads和长reads数据。BAM是二进制压缩格式,SAM文件为其纯文本格式,CRAM为BAM的高压缩格式,IO效率相比于BAM略差,但是占用存储空间更小。 1. BAM文件的比对信息 BAM的核心信…

用c语言实现通讯录

目录 静态简易通讯录 代码: 功能模块展示: 设计思路: 动态简易通讯录(本质顺序表) 代码: 扩容模块展示: 设计思路: 文件版本通讯录 代码: 文件模块展示&#x…

pas编程语言:深度剖析与实用技巧

pas编程语言:深度剖析与实用技巧 在编程的浩瀚海洋中,pas编程语言以其独特的魅力和深厚的内涵吸引着众多编程爱好者。然而,其复杂性和深度也常常让人望而生畏。本文将从四个方面、五个方面、六个方面和七个方面对pas编程语言进行深入剖析&am…

SJ705C安全帽高温预处理箱

一、仪器用途 安全帽高温预处理箱是我公司根据安全帽新国家标准检测试验要求而自主设计研发制造。是安全帽检测前做高温预处理的专用设备。 二、仪器特征 1、有PID自整定温度控制仪,控制准确。 2、数显计时、计温器。 3、石英灯管加热系统;。 …

【数据结构】单链表-->详细讲解,后赋源码

欢迎来到我的Blog,点击关注哦💕 前面已经介绍顺序表,顺序表存在一定的局限性,空间管理上存在一定的缺陷,今天介绍新的存储结构单链表。 前言: 单链表是一种基本的数据结构,它由一系列节点组成&a…

HTML网页滚动条使用整理_网页滚动条使用详解

一、HTML 网页滚动条 HTML Document 滚动条,自动出现; 当网页内容超出浏览器可视宽度或者高度,滚动条自动出现; 不同浏览器滚动条样式效果不同。 二、Css 修改滚动条样式 Css 伪元素控制进度条_Css控制滚动条_Css ::-webkit-scrollbar整理 三、Js监听滚动条,触底加载事…

Android 调试桥_ADB命令

Android 调试桥 ADB全称 【Android Debug Bridge】 是Android SDK中的一个命令行工具,adb命令可以直接操作管理Android模拟器或真实的Android设备(手机) ADB的工作原理 启动一个 adb 客户端时,此客户端首先检查是否有已运行的 …

python zip()函数(将多个可迭代对象的元素配对,创建一个元组的迭代器)zip_longest()

文章目录 Python zip() 函数深入解析基本用法函数原型基础示例 处理不同长度的迭代器高级用法多个迭代器使用 zip() 与 dict()解压序列 注意事项内存效率:zip() 返回的是一个迭代器,这意味着直到迭代发生前,元素不会被消耗。这使得 zip() 特别…

自然语言处理基础知识入门(六) GPT模型详解

GPT 前言一、GPT模型1.1 为什么采用Decoder模块?1.2 为什么不使用Encoder模块? 二、 模型训练2.1 预训练阶段2.2 半监督微调 总结 前言 在之前的章节中,深入探究了预训练ELMo模型的架构与实现原理。通过采用双向LSTM架构在大规模文本数据上进…

[数据集][目标检测][数据集][目标检测]智能手机检测数据集VOC格式5447张

数据集格式:Pascal VOC格式(不包含分割的txt文件,仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数):5447 标注数量(xml文件个数):5447 标注类别数:1 标注类别名称:["phone"] 每个类别标注的框数&#xff…

2024年华为OD机试真题-执行时长-Python-OD统一考试(C卷D卷)

2024年OD统一考试(D卷)完整题库:华为OD机试2024年最新题库(Python、JAVA、C++合集) 题目描述: 为了充分发挥GPU算力,需要尽可能多的将任务交给GPU执行,现在有一个任务数组,数组元素表示在这1秒内新增的任务个数且每秒都有新增任务,假设GPU最多一次执行n个任务,一次执…

Qt程序错误“QObject::connect: Cannot queue arguments of type ‘QTextCursor’”的解决方法

背景: 在Qt的线程中调用QTexiEdit控件的append(QString)或insertPlainText(QString),线程首次执行会报错 “QObject::connect: Cannot queue arguments of type ‘QTextCursor”,销毁该线程&a…