Elasticsearch:聊天机器人教程(一)

这篇具有很好参考价值的文章主要介绍了Elasticsearch:聊天机器人教程(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在本教程中,你将构建一个大型语言模型 (LLM) 聊天机器人,该机器人使用称为检索增强生成 (RAG) 的模式。

Elasticsearch:聊天机器人教程(一),Elasticsearch,AI,Elastic,机器人,语言模型,langchain,人工智能,elasticsearch,ai,搜索引擎

使用 RAG 构建的聊天机器人可以克服 ChatGPT 等通用会话模型所具有的一些限制。 特别是,他们能够讨论和回答以下问题:

  • 你的组织私有的信息
  • 不属于训练数据集的事件,或者 LLM 完成训练后发生的事件

作为一个额外的好处,RAG 可以帮助 LLM 以事实为 “基础”,使他们不太可能做出回应或 “产生幻觉”。

实现这一目标的秘诀是使用两步过程从 LLM 获得答案:

  • 首先在检索阶段,针对用户的查询搜索一个或多个数据源。 检索在此搜索中找到的相关文档。 为此,使用 Elasticsearch 索引是一个很好的选择,使你能够在关键字、密集和稀疏向量搜索方法,甚至它们的混合组合之间进行选择。
  • 然后在生成阶段,用户的提示被扩展为包括第一阶段检索到的文档,并添加了对 LLM 的指令,以在检索到的信息中找到用户问题的答案。 扩展提示(包括问题的添加上下文)将代替原始查询发送到 LLM。

教程结构

本教程分为两个主要部分。

  1. 在第一部分中,您将学习如何运行 Chatbot RAG 应用程序示例,这是一个具有 Python 后端和 React 前端的完整应用程序。
  2. 一旦你启动并运行了示例应用程序,本教程的第二部分将解释 RAG 实现的不同组件,以便你可以根据自己的需要调整示例代码。

要求

要学习本教程,你需要安装以下组件:

 1)Elasticsearch 及 Kibana

有关安装说明,请参阅如下的文章:

  • 如何在 Linux,MacOS 及 Windows 上进行安装 Elasticsearch

  • Kibana:如何在 Linux,MacOS 及 Windows 上安装 Elastic 栈中的 Kibana

在安装的时候,请选择 Elastic Stack 8.x 进行安装。在安装的时候,我们可以看到如下的安装信息:

Elasticsearch:聊天机器人教程(一),Elasticsearch,AI,Elastic,机器人,语言模型,langchain,人工智能,elasticsearch,ai,搜索引擎

在下面的展示中,我将使用 Elastic Stack 8.11 来进行展示。


2)OpenAI 的 API 密钥。 实际上,你可以使用你喜欢的任何其他 LLM,只要它受到 Langchain 项目的支持即可。

3)Python 解释器。 确保它是最新版本,例如 Python 3.8 或更高版本。

4)Node.js 和 Yarn

本教程重点介绍 RAG 主题。 为了能够修改示例应用程序,你将需要以下技术的基本知识:

  • 使用 Flask 进行 Python 后端开发。
  • 使用 React 进行 TypeScript 前端开发。

整个项目的完整代码在如下地址可以进行下载:

git clone https://github.com/liu-xiao-guo/elasticsearch-labs
cd elasticsearch-labs/example-apps/chatbot-rag-app

聊天机器人示例位于 example-apps/chatbot-rag-app 子目录中。

$ pwd
/Users/liuxg/python/elasticsearch-labs
$ ls
CONTRIBUTING.md         bin                     supporting-blog-content
LICENSE                 datasets                test
Makefile                example-apps
README.md               notebooks
$ cd example-apps
$ ls
README.md                 openai-embeddings         workplace-search
chatbot-rag-app           relevance-workbench
internal-knowledge-search search-tutorial
$ cd chatbot-rag-app/
$ ls
Dockerfile       api              data             frontend         requirements.txt
README.md        app-demo.gif     env.example      requirements.in

Python 后端

在本节中,我们将设置和配置项目的后端部分。

安装 Python 依赖项

为了遵循 Python 最佳实践,你现在将创建一个虚拟环境,这是专用于该项目的私有 Python 安装,可以在其中安装所有依赖项。 使用以下命令执行此操作:

python3 -m venv .venv
$ pwd
/Users/liuxg/python/elasticsearch-labs/example-apps/chatbot-rag-app
$ python3 -m venv .venv

此命令在 .venv (dot-venv) 目录中创建 Python 虚拟环境。 你可以将此命令中的 .venv 替换为你喜欢的任何其他名称。 请注意,在某些 Python 安装中,你可能需要使用 python 而不是 python3 来调用 Python 解释器。

下一步是激活虚拟环境,这是使该虚拟环境成为你所在终端会话的活动 Python 环境的一种方法。如果你使用的是基于 UNIX 的操作系统(例如 Linux 或 macOS),请激活 虚拟环境如下:

source .venv/bin/activate
$ pwd
/Users/liuxg/python/elasticsearch-labs/example-apps/chatbot-rag-app
$ python3 -m venv .venv
$ source .venv/bin/activate
(.venv) $ 

如果你在 Microsoft Windows 计算机上的 WSL 环境中工作,上述激活命令也适用。 但如果你使用的是 Windows 命令提示符或 PowerShell,激活命令会有所不同:

.venv\Scripts\activate

激活虚拟环境后,命令行提示符将更改为显示环境名称:

(.venv) $ _

配置 Python 环境的最后一步是安装入门应用程序所需的一些包。 确保上一步中已激活虚拟环境,然后运行以下命令安装这些依赖项:

pip install -r requirements.txt

 Elasticsearch:聊天机器人教程(一),Elasticsearch,AI,Elastic,机器人,语言模型,langchain,人工智能,elasticsearch,ai,搜索引擎 

编写配置文件

在上一节中下载的代码的主目录中有一个名为 env.example 的文件。 该文件包含应用程序支持的所有配置变量。

复制该文件,并将其命名为 .env:

cp env.example .env
(.venv) $ ls -al
total 920
drwxr-xr-x  14 liuxg  staff     448 Jan 15 09:25 .
drwxr-xr-x   9 liuxg  staff     288 Jan 15 09:21 ..
-rw-r--r--   1 liuxg  staff      55 Jan 15 09:21 .flaskenv
-rw-r--r--   1 liuxg  staff      82 Jan 15 09:21 .gitignore
drwxr-xr-x   6 liuxg  staff     192 Jan 15 09:25 .venv
-rw-r--r--   1 liuxg  staff     807 Jan 15 09:21 Dockerfile
-rw-r--r--   1 liuxg  staff    6085 Jan 15 09:21 README.md
drwxr-xr-x   7 liuxg  staff     224 Jan 15 09:21 api
-rw-r--r--   1 liuxg  staff  430277 Jan 15 09:21 app-demo.gif
drwxr-xr-x   4 liuxg  staff     128 Jan 15 09:21 data
-rw-r--r--   1 liuxg  staff     860 Jan 15 09:21 env.example
drwxr-xr-x   9 liuxg  staff     288 Jan 15 09:21 frontend
-rw-r--r--   1 liuxg  staff     315 Jan 15 09:21 requirements.in
-rw-r--r--   1 liuxg  staff    5259 Jan 15 09:21 requirements.txt
(.venv) $ cp env.example .env
(.venv) $ ls .env
.env

如果您在 Windows 上学习本教程,请在上面的命令中使用 copy 而不是 cp。

在你喜欢的文本编辑器中打开 .env 以查看应用程序配置,并查看以下小节以获取有关如何配置应用程序的指导。

Elasticsearch 设置

我们在 .env 中设置如下的变量:

.env

ELASTICSEARCH_URL=https://elastic:yarOjyX5CLqTsKVE3v*d@192.168.0.3:9200
ES_INDEX=workplace-app-docs
ES_INDEX_CHAT_HISTORY=workplace-app-docs-chat-history
LLM_TYPE=openai
OPENAI_API_KEY=YourOpenAiKey

 Elasticsearch:聊天机器人教程(一),Elasticsearch,AI,Elastic,机器人,语言模型,langchain,人工智能,elasticsearch,ai,搜索引擎 

在上面,你必须根据自己的 Elasticsearch 安装修改上面的 ELASTICSEARCH_URL 值。你还需要修改上面的 OPENAI_API_KEY 值。你需要在 OpenAI 的网站中申请开发者 key。你可以在地址 https://platform.openai.com/api-keys 进行申请。

为了能够让 Python 连接到 Elasticsearch,我们必须把 Elasticsearch 的证书拷贝到当前的目录下:

(.venv) $ pwd
/Users/liuxg/python/elasticsearch-labs/example-apps/chatbot-rag-app/api
(.venv) $ cp ~/elastic/elasticsearch-8.11.0/config/certs/http_ca.crt .
(.venv) $ ls http_ca.crt 
http_ca.crt

另外,在 github 上的代码是为在 docker 的环境下运行二准备的,我们必须修改其中的一个部分以使得它正常运行:

api/elasticsearch_client.py

if ELASTICSEARCH_URL:
    elasticsearch_client = Elasticsearch(
        hosts=[ELASTICSEARCH_URL], 
        ca_certs = ./http_ca.crt, 
        verify_certs = True
    )

data/index_data.py

if ELASTICSEARCH_URL:
    elasticsearch_client = Elasticsearch(
        hosts=[ELASTICSEARCH_URL], 
        ca_certs = "./http_ca.crt", 
        verify_certs = True
    )

写入示例数据集

该应用程序附带一个示例数据集,存储在 data/data.json 文件中。 请随意在文本编辑器中打开此文件,以熟悉其中包含的文档。

使用以下命令将数据集导入应用程序:

flask create-index
(.venv) $ pwd
/Users/liuxg/python/elasticsearch-labs/example-apps/chatbot-rag-app
(.venv) $ flask create-index
".elser_model_2" model is available
Loading data from $/Users/liuxg/python/elasticsearch-labs/example-apps/chatbot-rag-app/api/../data/data.json
Loaded 15 documents
Split 15 documents into 26 chunks
Creating Elasticsearch sparse vector store in Elastic Cloud: 

等上面的命令运行完毕后,我们到 Kibana 中进行查看:

Elasticsearch:聊天机器人教程(一),Elasticsearch,AI,Elastic,机器人,语言模型,langchain,人工智能,elasticsearch,ai,搜索引擎

Elasticsearch:聊天机器人教程(一),Elasticsearch,AI,Elastic,机器人,语言模型,langchain,人工智能,elasticsearch,ai,搜索引擎

启动后端

完成上述所有步骤后,你应该能够使用以下命令启动 Python 后端:

flask run

Elasticsearch:聊天机器人教程(一),Elasticsearch,AI,Elastic,机器人,语言模型,langchain,人工智能,elasticsearch,ai,搜索引擎

保持后端运行并打开一个新的终端会话以继续本教程的其余部分。

React 前端

在本部分中,你将启动聊天机器人的前端。

安装依赖项

前端位于项目的 frontend 子目录中,因此请继续更改为:

cd frontend
$ pwd
/Users/liuxg/python/elasticsearch-labs/example-apps/chatbot-rag-app
$ cd frontend/

运行 yarn 命令安装所有前端依赖项:

yarn

Elasticsearch:聊天机器人教程(一),Elasticsearch,AI,Elastic,机器人,语言模型,langchain,人工智能,elasticsearch,ai,搜索引擎

运行前端

使用以下命令启动前端:

yarn start

几秒钟后,你的浏览器应该打开该应用程序。

Elasticsearch:聊天机器人教程(一),Elasticsearch,AI,Elastic,机器人,语言模型,langchain,人工智能,elasticsearch,ai,搜索引擎

使用应用程序

现在,你可以通过单击 common questions 中的一个或输入你自己的问题来向聊天机器人询问任何问题。

聊天机器人的响应将来自导入的数据集,每个响应将引用检索到的文档以及使用特定文档的文档。

Elasticsearch:聊天机器人教程(一),Elasticsearch,AI,Elastic,机器人,语言模型,langchain,人工智能,elasticsearch,ai,搜索引擎

一定要尝试提出后续问题,这些问题应该 “记住” 会话之前讨论的内容。

Elasticsearch:聊天机器人教程(一),Elasticsearch,AI,Elastic,机器人,语言模型,langchain,人工智能,elasticsearch,ai,搜索引擎

本教程的其余部分将讨论该应用程序的一些实现细节,以便你可以根据需要进行更改、试验和调整代码。请关注我们的下一个部分!请详细阅读文章 “Elasticsearch:聊天机器人教程(二)”。

更多阅读,请参阅 “Elasticsearch:使用 Elasticsearch 向量搜索及 RAG 来实现 Chatbot”。文章来源地址https://www.toymoban.com/news/detail-796877.html

到了这里,关于Elasticsearch:聊天机器人教程(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java实现AI机器人聊天

    OpenAI API 几乎可以应用于任何涉及理解或生成自然语言或实现代码等场景。提供一系列具有不同学习训练的模型,适用于处理不同的任务,并且自己能够自定义学习模型,通过大样本数据去喂养该模型,使其能实现自己的应用场景。这些模型可用于从内容生成到语义搜索和分

    2024年02月12日
    浏览(50)
  • Elasticsearch:带有自查询检索器的聊天机器人示例

    本工作簿演示了 Elasticsearch 的自查询检索器 (self-query retriever) 将问题转换为结构化查询并将结构化查询应用于 Elasticsearch 索引的示例。 在开始之前,我们首先使用 langchain 将文档分割成块,然后使用 ElasticsearchStore.from_documents 创建一个向量存储并将数据索引到 elasticsearch。 然

    2024年02月03日
    浏览(34)
  • ChatGPT 4.0:AI 聊天机器人

    当 ChatGPT 问世时,人们对它作为 AI 聊天机器人的自然语言能力印象深刻,人们感到敬畏。但是,当备受期待的 GPT-4 大型语言模型问世时,它揭开了我们认为 AI 可能实现的盖子,有人称其为 AGI(通用人工智能)的早期一瞥。 该模型的创建者OpenAI称其为该公司“最先进的系统

    2024年02月02日
    浏览(88)
  • ai聊天机器人chatgpt收费版

        AI聊天机器人的功能通常包括以下几个方面:     自然语言理解。该功能可以识别并理解用户输入的自然语言,如文本、语音等,以便进行后续的处理和回复。     对话管理。该功能可以管理对话的上下文和流程,并根据用户的输入和意图来产生相应的回复和行为。  

    2024年02月03日
    浏览(59)
  • 正在改变一切的Ai聊天机器人

    ChatGPT通过Al生成的内容让我们眼花缭乱,从一个聊天机器人转化成推动一个创新时代的技术,但,也并非人人都知道,那么,你知道Chatgpt到底是什么吗? ChatGPT自取网址:http://gogsu.com/ ChatGPT由 OpenAI 开发,以开发文本到图像生成器DALL-E 2而闻名,目前发布的版本有GPT-3、GPT3.

    2024年02月08日
    浏览(61)
  • Elasticsearch:在 Elasticsearch 中使用 NLP 和向量搜索增强聊天机器人功能

    作者:Priscilla Parodi 会话界面已经存在了一段时间,并且作为协助各种任务(例如客户服务、信息检索和任务自动化)的一种方式而变得越来越流行。 通常通过语音助手或消息应用程序访问,这些界面模拟人类对话,以帮助用户更有效地解决他们的查询。 随着技术的进步,聊

    2024年02月07日
    浏览(48)
  • Elasticsearch:使用 LangChain 对话链和 OpenAI 的聊天机器人

    在此笔记本中,我们将构建一个聊天机器人,它可以回答有关自定义数据的问题,例如雇主的政策。 聊天机器人使用 LangChain 的 ConversationalRetrievalChain,具有以下功能: 用自然语言回答问题 在 Elasticsearch 中运行混合搜索以查找回答问题的文档 使用 OpenAI LLM 提取并总结答案 保

    2024年02月03日
    浏览(43)
  • Coze:开启AI聊天机器人的全新篇章

    在上篇文章第一个 AI 应用中写到我通过 Coze 平台开发了第一个 AI 应用,其实也没什么特别的,就一聊天机器人。我选择发布在 Discord,所以平常是这样使用的: 看上去和在浏览器中使用 ChatGPT 是一样的,那为啥不直接使用浏览器呢?不用安装 App,也不用费劲折腾。我也有同

    2024年02月19日
    浏览(32)
  • 【Ai篇】10 款AI聊天机器人\AI绘画免费使用

    【Ai篇】10 款AI聊天机器人\\\\AI绘画免费使用 1、GPT机器人 GPT机器人是一款免费的AI聊天机器人和AI绘画软件,AI聊天机器人支持GPT-4,而且支持AI绘画,可通过文本描述进行AI绘画创作,软件免费开放使用,无需注册登录,目前支持安卓,非常不错,感兴趣的同学可以下载体验。

    2024年02月03日
    浏览(77)
  • 十分钟快速部署一个自己的AI聊天机器人

    个人名片: 🐼 作者简介:一名大二在校生,喜欢编程🎋 🐻‍❄️ 个人主页🥇: 落798. 🐼 个人WeChat:见文末 🕊️ 系列专栏:🖼️ 零基础学Java——小白入门必备 重识C语言——复习回顾 计算机网络体系———深度详讲 微信小程序开发——实战开发 🐓 每日一句:🍭

    2024年02月14日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包