国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Elasticsearch:帶有自查詢檢索器的聊天機器人示例

這篇具有很好參考價值的文章主要介紹了Elasticsearch:帶有自查詢檢索器的聊天機器人示例。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本工作簿演示了 Elasticsearch 的自查詢檢索器 (self-query retriever) 將問題轉(zhuǎn)換為結(jié)構(gòu)化查詢并將結(jié)構(gòu)化查詢應(yīng)用于 Elasticsearch 索引的示例。

在開始之前,我們首先使用 langchain 將文檔分割成塊,然后使用 ElasticsearchStore.from_documents 創(chuàng)建一個向量存儲并將數(shù)據(jù)索引到 elasticsearch。

然后,我們將看到一些示例查詢,展示了由 elasticsearch 驅(qū)動的自查詢檢索器的全部功能。

Elasticsearch:帶有自查詢檢索器的聊天機器人示例,Elasticsearch,AI,Elastic,elasticsearch,大數(shù)據(jù),搜索引擎,人工智能,全文檢索,機器人

安裝

如果你還沒有安裝好自己的 Elasticsearch 及 Kibana,請參考文章:

安裝 Elasticsearch 及 Kibana

如果你還沒有安裝好自己的 Elasticsearch 及 Kibana,那么請參考一下的文章來進行安裝:

  • 如何在 Linux,MacOS 及 Windows 上進行安裝 Elasticsearch

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

在安裝的時候,請選擇 Elastic Stack 8.x?進行安裝。在安裝的時候,我們可以看到如下的安裝信息:

Elasticsearch:帶有自查詢檢索器的聊天機器人示例,Elasticsearch,AI,Elastic,elasticsearch,大數(shù)據(jù),搜索引擎,人工智能,全文檢索,機器人

Python 安裝包

我們需要安裝 Python 版本 3.6?及以上版本。我們還需要安裝如下的 Python 安裝包:

python3 -m pip install -qU lark elasticsearch langchain openai
$ pwd
/Users/liuxg/python/elser
$ python3 -m pip install -qU lark elasticsearch langchain openai
$ pip3 list | grep elasticsearch
elasticsearch             8.11.1
rag-elasticsearch         0.0.1        /Users/liuxg/python/rag-elasticsearch/my-app/packages/rag-elasticsearch

在本練習中,我們將使用最新的 Elastic Stack 8.11 來進行展示。

環(huán)境變量

在啟動 Jupyter 之前,我們設(shè)置如下的環(huán)境變量:

export ES_USER="elastic"
export ES_PASSWORD="yarOjyX5CLqTsKVE3v*d"
export ES_ENDPOINT="localhost"
export OPENAI_API_KEY="YOUR_OPEN_AI_KEY"

請在上面修改相應(yīng)的變量的值。特別是你需要輸入自己的 OPENAI_API_KEY。

拷貝 Elasticsearch 證書

我們把 Elasticsearch 的證書拷貝到當前的目錄下:

$ pwd
/Users/liuxg/python/elser
$ cp ~/elastic/elasticsearch-8.11.0/config/certs/http_ca.crt .
overwrite ./http_ca.crt? (y/n [n]) y
$ ls http_ca.crt 
http_ca.crt

創(chuàng)建應(yīng)用

導入 python 包

我們在當前的目錄下創(chuàng)建 jupyter notebook:Chatbot Example with Self Query Retriever.ipynb

from langchain.schema import Document
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import ElasticsearchStore
from langchain.llms import OpenAI
from langchain.retrievers.self_query.base import SelfQueryRetriever
from langchain.chains.query_constructor.base import AttributeInfo

Elasticsearch:帶有自查詢檢索器的聊天機器人示例,Elasticsearch,AI,Elastic,elasticsearch,大數(shù)據(jù),搜索引擎,人工智能,全文檢索,機器人

創(chuàng)建文檔

接下來,我們將使用 langchain 模式文檔創(chuàng)建包含電影摘要的文檔列表,其中包含每個文檔的 page_content 和元數(shù)據(jù)。

docs = [
    Document(
        page_content="A bunch of scientists bring back dinosaurs and mayhem breaks loose",
        metadata={"year": 1993, "rating": 7.7, "genre": "science fiction", "director": "Steven Spielberg", "title": "Jurassic Park"},
    ),
    Document(
        page_content="Leo DiCaprio gets lost in a dream within a dream within a dream within a ...",
        metadata={"year": 2010, "director": "Christopher Nolan", "rating": 8.2, "title": "Inception"},
    ),
    Document(
        page_content="A psychologist / detective gets lost in a series of dreams within dreams within dreams and Inception reused the idea",
        metadata={"year": 2006, "director": "Satoshi Kon", "rating": 8.6, "title": "Paprika"},
    ),
    Document(
        page_content="A bunch of normal-sized women are supremely wholesome and some men pine after them",
        metadata={"year": 2019, "director": "Greta Gerwig", "rating": 8.3, "title": "Little Women"},
    ),
    Document(
        page_content="Toys come alive and have a blast doing so",
        metadata={"year": 1995, "genre": "animated", "director": "John Lasseter", "rating": 8.3, "title": "Toy Story"},
    ),
    Document(
        page_content="Three men walk into the Zone, three men walk out of the Zone",
        metadata={
            "year": 1979,
            "rating": 9.9,
            "director": "Andrei Tarkovsky",
            "genre": "science fiction",
            "rating": 9.9,
            "title": "Stalker",
        },
    ),
]

連接到 Elasticsearch

我們將使用我們本地構(gòu)建的 Elasticsearch 集群進行連接。我們可以參考之前的文章 “Elasticsearch:使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation (三)”。

from dotenv import load_dotenv
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import ElasticKnnSearch
from langchain.text_splitter import CharacterTextSplitter
from urllib.request import urlopen
import os, json
 
load_dotenv()
 
openai_api_key=os.getenv('OPENAI_API_KEY')
elastic_user=os.getenv('ES_USER')
elastic_password=os.getenv('ES_PASSWORD')
elastic_endpoint=os.getenv("ES_ENDPOINT")
elastic_index_name='elastic-knn-search'
from elasticsearch import Elasticsearch
 
url = f"https://{elastic_user}:{elastic_password}@{elastic_endpoint}:9200"
connection = Elasticsearch(url, ca_certs = "./http_ca.crt", verify_certs = True)
 
print(connection.info())
 
embeddings = OpenAIEmbeddings(openai_api_key=openai_api_key)
dims=1536
 

es = ElasticsearchStore.from_documents( 
                            docs,
                            embedding = embeddings, 
                            es_url = url, 
                            es_connection = connection,
                            index_name = elastic_index_name, 
                            es_user = elastic_user,
                            es_password = elastic_password)

Elasticsearch:帶有自查詢檢索器的聊天機器人示例,Elasticsearch,AI,Elastic,elasticsearch,大數(shù)據(jù),搜索引擎,人工智能,全文檢索,機器人

設(shè)置查詢檢索器

接下來,我們將通過提供有關(guān)文檔屬性的一些信息和有關(guān)文檔的簡短描述來實例化自查詢檢索器。

然后我們將使用 SelfQueryRetriever.from_llm 實例化檢索器 (retriever)

metadata_field_info = [
    AttributeInfo(
        name="genre",
        description="The genre of the movie. Can be either 'science fiction' or 'animated'.",
        type="string or list[string]",
    ),
    AttributeInfo(
        name="year",
        description="The year the movie was released",
        type="integer",
    ),
    AttributeInfo(
        name="director",
        description="The name of the movie director",
        type="string",
    ),
    AttributeInfo(
        name="rating", description="A 1-10 rating for the movie", type="float"
    ),
]

document_content_description = "Brief summary of a movie"

# Set up openAI llm with sampling temperature 0
llm = OpenAI(temperature=0, openai_api_key=openai_api_key)

# instantiate retriever
retriever = SelfQueryRetriever.from_llm(
    llm, es, document_content_description, metadata_field_info, verbose=True
)

使用自查詢檢索器回答問題

現(xiàn)在我們將演示如何使用 RAG 的自查詢檢索器。

from langchain.chat_models import ChatOpenAI
from langchain.schema.runnable import RunnableParallel, RunnablePassthrough
from langchain.prompts import ChatPromptTemplate, PromptTemplate
from langchain.schema import format_document

LLM_CONTEXT_PROMPT = ChatPromptTemplate.from_template("""
Use the following context movies that matched the user question. Use the movies below only to answer the user's question.

If you don't know the answer, just say that you don't know, don't try to make up an answer.

----
{context}
----
Question: {question}
Answer:
""")

DOCUMENT_PROMPT = PromptTemplate.from_template("""
---
title: {title}                                                                                   
year: {year}  
director: {director}    
---
""")

def _combine_documents(
    docs, document_prompt=DOCUMENT_PROMPT, document_separator="\n\n"
):
    doc_strings = [format_document(doc, document_prompt) for doc in docs]
    return document_separator.join(doc_strings)


_context = RunnableParallel(
    context=retriever | _combine_documents,
    question=RunnablePassthrough(),
)

chain = (_context | LLM_CONTEXT_PROMPT | llm)

chain.invoke("What movies are about dreams and it was released after the year 2009 but before the year 2011?")

Elasticsearch:帶有自查詢檢索器的聊天機器人示例,Elasticsearch,AI,Elastic,elasticsearch,大數(shù)據(jù),搜索引擎,人工智能,全文檢索,機器人

上面的代碼可以在地址:https://github.com/liu-xiao-guo/semantic_search_es/blob/main/Chatbot%20Example%20with%20Self%20Query%20Retriever.ipynb下載。文章來源地址http://www.zghlxwxcb.cn/news/detail-780593.html

到了這里,關(guān)于Elasticsearch:帶有自查詢檢索器的聊天機器人示例的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Elasticsearch:使用 LangChain 對話鏈和 OpenAI 的聊天機器人

    Elasticsearch:使用 LangChain 對話鏈和 OpenAI 的聊天機器人

    在此筆記本中,我們將構(gòu)建一個聊天機器人,它可以回答有關(guān)自定義數(shù)據(jù)的問題,例如雇主的政策。 聊天機器人使用 LangChain 的 ConversationalRetrievalChain,具有以下功能: 用自然語言回答問題 在 Elasticsearch 中運行混合搜索以查找回答問題的文檔 使用 OpenAI LLM 提取并總結(jié)答案 保

    2024年02月03日
    瀏覽(19)
  • Elasticsearch:聊天機器人、人工智能和人力資源:電信公司和企業(yè)組織的成功組合

    Elasticsearch:聊天機器人、人工智能和人力資源:電信公司和企業(yè)組織的成功組合

    作者:來自 Elastic?Jürgen Obermann, Piotr Kobziakowski 讓我們來談?wù)劥笮推髽I(yè)人力資源領(lǐng)域中一些很酷且改變游戲規(guī)則的東西:生成式 AI 和 Elastic Stack 的絕佳組合。 現(xiàn)在,想象一下大型電信公司的典型人力資源部門 — 他們正在處理一百萬件事情,對嗎? 從回答無休止的員工查詢到

    2024年01月24日
    瀏覽(34)
  • 機器人現(xiàn)有力控技術(shù)檢索

    機器人現(xiàn)有力控技術(shù)檢索

    1.1 直接力控 針對外力進行直接控制,其核心是 通過操作期望力與測量力之間差值的方式實現(xiàn)相應(yīng)力控 期望力的值該怎么給 在絕大多數(shù)的實際應(yīng)用中,我們都是優(yōu)先給予機器人位置軌跡的指令,而具體期望力的數(shù)值大小是極難直接精確給出的; 用手去抓握一些柔軟易形變的

    2024年04月25日
    瀏覽(15)
  • 聊天機器人的機器人API:提供機器人API接口,使開發(fā)者能夠方便地實現(xiàn)聊天機器人功能

    作者:禪與計算機程序設(shè)計藝術(shù) 聊天機器人的機器人API:提供機器人API接口,使開發(fā)者能夠方便地實現(xiàn)聊天機器人功能 1.1. 背景介紹 隨著人工智能技術(shù)的飛速發(fā)展,智能對話交互已逐漸成為各行各業(yè)的趨勢。在各種智能場景中,聊天機器人作為一種創(chuàng)新的交流方式,為用戶

    2024年02月15日
    瀏覽(21)
  • elasticsearch 基于ik分詞器的分詞查詢和模糊匹配

    elasticsearch 基于ik分詞器的分詞查詢和模糊匹配

    前言:elasticsearch 查詢有很多,查詢的條件有固定格式,返回結(jié)果提示不明確,讓ES使用起來有點不方便的感覺,ES查詢方式很多,簡單介紹幾種使用點的,實用的 此處簡單梳理一下最常用的查詢 模糊匹配查詢 類似 mysql 語法中的 like ‘%value%’ 類似于百度的分詞查詢 將

    2024年02月16日
    瀏覽(17)
  • 聊天機器人簡要理解

    聊天機器人簡要理解

    身邊的同事或多或少都在聊ChatGPT,這又使得學生時代訓練模型的恐懼感開始支配我。說起聊天機器人,我們先熟悉一下不同對話系統(tǒng)的概念。 1、單輪對話 單輪與傳統(tǒng)的問答系統(tǒng)相類似,是智能對話系統(tǒng)的初級應(yīng)用。一般表現(xiàn)為一問一答的形式,用戶提出問題或前發(fā)出請求,

    2024年02月03日
    瀏覽(44)
  • 中文聊天機器人

    中文聊天機器人

    目錄 一、項目介紹 wukong-robot介紹 特點 二、環(huán)境搭建 三、安裝配置 四、錄制喚醒詞并使用機器人? 要說當前最火的技術(shù)肯定就是人工智能和物聯(lián)網(wǎng)了。 很多的廠家都不是從頭到尾都自己實現(xiàn)的 ?截少了一塊最后一個算法叫隱馬爾可夫(都是人名的音譯) 想要搞這些一定要

    2024年02月09日
    瀏覽(18)
  • 智能聊天機器人的實現(xiàn)

    ChatGPT近期以強大的對話和信息整合能力風靡全網(wǎng),可以寫代碼、改論文、講故事,幾乎無所不能,這讓人不禁有個大膽的想法,能否用他的對話模型打造一個智能機器人,可以在與好友對話中給出意想不到的回應(yīng),而且再也不用擔心女朋友影響我們 打游戲 工作了。 本項目是

    2024年02月15日
    瀏覽(17)
  • AI聊天機器人,一個就夠了:文心一言、訊飛星火、通義千問AI聊天機器人深度對比(二)

    AI聊天機器人,一個就夠了:文心一言、訊飛星火、通義千問AI聊天機器人深度對比(二)

    本次為第二部分的測評,第一部分的測評請點擊這里。綜合結(jié)論: :通義千問 訊飛星火 文心一言 。 邏輯推理能力:訊飛星火 = 通義千問 文心一言。對于基本的邏輯推理問題,三個AI聊天機器人都能通過測試。但對于稍高難度的邏輯推理問題,訊飛星火和通義千問的表現(xiàn)亮

    2024年02月01日
    瀏覽(34)
  • AI聊天機器人,一個就夠了:文心一言、訊飛星火、通義千問AI聊天機器人深度對比(一)

    AI聊天機器人,一個就夠了:文心一言、訊飛星火、通義千問AI聊天機器人深度對比(一)

    本次為第一部分的測評,綜合結(jié)論: 訊飛星火 文心一言 = 通義千問 。 文本生成能力:文心一言 = 訊飛星火 通義千問,訊飛星火表現(xiàn)亮眼,文心一言作為國內(nèi)AI聊天機器人的先發(fā)者,在創(chuàng)意寫作方面略不盡如人意。 代碼能力:文心一言 = 訊飛星火 = 通義千問。對于不是很復

    2024年02月02日
    瀏覽(34)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包