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

Langchain+ElasticSearch+文心千帆 構(gòu)建檢索增強(qiáng)LLM Agent

這篇具有很好參考價值的文章主要介紹了Langchain+ElasticSearch+文心千帆 構(gòu)建檢索增強(qiáng)LLM Agent。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Background

很早就開始做檢索增強(qiáng)的大語言模型Agent了,通過外接知識庫為LLM提供外部知識能增強(qiáng)它回答的準(zhǔn)確性。這里我們使用ElasticSearch作為數(shù)據(jù)庫存儲相關(guān)知識,使用百度文心千帆的embedding API提供向量嵌入;借助langchain搭建LLM Agent.

需要安裝的環(huán)境有:

Python, ElasticSearch, langchain, qianfan;后兩個直接pip install langchain,pip install qianfan

檢索原理

這里可以參考我之前的博客:document-question-answering-bot(文檔問答機(jī)器人)-CSDN博客

使用里面提到的雙塔模型原理完成檢索功能。

如何檢索?我們拋棄了ElasticSearch中古老的TF-IDF檢索方式,也放棄了使用BERT進(jìn)行文檔嵌入;而是全面向大語言模型時代看齊,使用新的模型構(gòu)建基于語義的搜索引擎。

文本嵌入

現(xiàn)有的很多開源項目使用OpenAI提供的embedding API進(jìn)行,但是考慮到翻墻,我們放棄了這個做法;也有人使用Huggingface上的模型進(jìn)行API嵌入,考慮到可能需要本地部署LLM的算力消耗,我們?nèi)詻]有考慮;出于類似的原因,我們放棄了本地部署LLaMa,Baichuan2等LLM模型進(jìn)行詞嵌入。

本文最后使用百度文心千帆提供的Embedding-V1文本嵌入模型進(jìn)行,步驟是:

  1. 使用該模型需要現(xiàn)在文心千帆控制臺注冊賬戶:百度智能云控制臺?(baidu.com)
  2. 注冊賬戶后,左側(cè)千帆大模型平臺-應(yīng)用接入-創(chuàng)建應(yīng)用;記住API-KEY和SECRET-KEY。

Langchain+ElasticSearch+文心千帆 構(gòu)建檢索增強(qiáng)LLM Agent,langchain,elasticsearch,搜索引擎

數(shù)據(jù)庫

需要先安裝并啟動ElasticSearch數(shù)據(jù)庫,具體教程略

LangChain搜索引擎

langchain是一個大語言模型Agent開發(fā)框架,我們在這里使用它讀取數(shù)據(jù)內(nèi)容并建立索引,完成對前述文本嵌入模型和數(shù)據(jù)庫的調(diào)用,搜索引擎構(gòu)建:

from langchain.document_loaders import PyPDFLoader
from langchain.embeddings import QianfanEmbeddingsEndpoint
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores import ElasticVectorSearch
from langchain.chains import RetrievalQA

import os
os.environ['QIANFAN_AK'] = ""
os.environ['QIANFAN_SK'] = ""


loader = PyPDFLoader("2307.10569.pdf")
data = loader.load()
 
text_splitter = RecursiveCharacterTextSplitter(chunk_size=200, chunk_overlap=0)
documents = text_splitter.split_documents(data)
print(len(documents), documents[0])

這里loader中是需要檢索的外部知識庫,我這里以一個PDF文檔為例。如果嵌入的是HTML、TXT等其他類型,只需要調(diào)用langchain.documents_loaders里的其他讀取方式即可。

使用RecursiveCharacterTextSplitter對文本進(jìn)行分割;這里設(shè)置每200個詞語截斷成一段話,搜索引擎會為這每一段建立索引。像這里我們把PDF文件分成了98塊,顯示了第一塊的內(nèi)容,并為此建立了源。

Langchain+ElasticSearch+文心千帆 構(gòu)建檢索增強(qiáng)LLM Agent,langchain,elasticsearch,搜索引擎

下面這段代碼定義了一個嵌入模型及數(shù)據(jù)庫,這一段執(zhí)行結(jié)束之后數(shù)據(jù)庫中就已經(jīng)存儲了相關(guān)信息了;程序會輸出下面的內(nèi)容:

embeddings = QianfanEmbeddingsEndpoint()
db = ElasticVectorSearch.from_documents(
    documents,
    embeddings,
    elasticsearch_url="http://localhost:9200",
    index_name="elastic-index",
)
print(db.client.info())

Langchain+ElasticSearch+文心千帆 構(gòu)建檢索增強(qiáng)LLM Agent,langchain,elasticsearch,搜索引擎

接下來只需要查詢:

db = ElasticVectorSearch(
    elasticsearch_url="http://localhost:9200",
    index_name="elastic-index",
    embedding=embeddings,
)

docs_and_scores = db.similarity_search_with_score("What it Aligning?", k=10)
print(docs_and_scores)

"What is Aligning"是我們提出的問題,K=10是搜索引擎按照相似度返回的前10個文檔:

Langchain+ElasticSearch+文心千帆 構(gòu)建檢索增強(qiáng)LLM Agent,langchain,elasticsearch,搜索引擎

可以看到文檔內(nèi)容,文檔源等等。在此可以說我們的搜索引擎已經(jīng)構(gòu)建完成啦!

Langchain構(gòu)建檢索增強(qiáng)LLM Agent

如果你的目標(biāo)只是構(gòu)建一個搜索引擎,那這一部分可以跳過。

如果你是想讓一個LLM的機(jī)器人能根據(jù)檢索出的文檔內(nèi)容回答,只需要調(diào)用LLM機(jī)器人,并把之前返回的文檔內(nèi)容寫入prompt中即可完成。這方面可以自己調(diào)用API完成,也可以繼續(xù)使用Langchain框架完成。具體如何調(diào)用LLM就不詳細(xì)介紹啦。

一些參考文檔:

同濟(jì)子豪兄-基于文心大模型的金融知識庫問答AI實戰(zhàn) - 飛槳AI Studio星河社區(qū) (baidu.com)

基于langchain+千帆sdk的一個基于文檔的QA問答Demo - 百度智能云千帆社區(qū) (baidu.com)

使用 Elasticsearch、OpenAI 和 LangChain 進(jìn)行語義搜索_Elastic 中國社區(qū)官方博客的博客-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-758550.html

到了這里,關(guān)于Langchain+ElasticSearch+文心千帆 構(gòu)建檢索增強(qiáng)LLM Agent的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Elasticsearch:什么是檢索增強(qiáng)生成 - RAG?

    Elasticsearch:什么是檢索增強(qiáng)生成 - RAG?

    在人工智能的動態(tài)格局中,檢索增強(qiáng)生成(Retrieval Augmented Generation - RAG)已經(jīng)成為游戲規(guī)則的改變者,徹底改變了我們生成文本和與文本交互的方式。 RAG 使用大型語言模型 (LLMs) 等工具將信息檢索的能力與自然語言生成無縫結(jié)合起來,為內(nèi)容創(chuàng)建提供了一種變革性的方法。

    2024年02月08日
    瀏覽(20)
  • Elasticsearch:什么是檢索增強(qiáng)生成 (RAG)?

    Elasticsearch:什么是檢索增強(qiáng)生成 (RAG)?

    檢索增強(qiáng)生成 (RAG) 是一種利用來自私有或?qū)S袛?shù)據(jù)源的信息來補(bǔ)充文本生成的技術(shù)。 它將旨在搜索大型數(shù)據(jù)集或知識庫的檢索模型與大型語言模型 (LLM) 等生成模型相結(jié)合,后者獲取該信息并生成可讀的文本響應(yīng)。 檢索增強(qiáng)生成可以通過添加來自其他數(shù)據(jù)源的上下文并通過培

    2024年02月04日
    瀏覽(21)
  • Langchain 與 Elasticsearch:創(chuàng)新數(shù)據(jù)檢索的融合實戰(zhàn)

    Langchain 與 Elasticsearch:創(chuàng)新數(shù)據(jù)檢索的融合實戰(zhàn)

    在信息爆炸的時代,有效地檢索和處理數(shù)據(jù)變得至關(guān)重要。Langchain 和 Elasticsearch 的結(jié)合,為我們提供了一個強(qiáng)大的工具,以更智能的方式進(jìn)行數(shù)據(jù)檢索和分析。 作為一名擁有多年 Elasticsearch 實戰(zhàn)經(jīng)驗的技術(shù)博主,我將在本文中詳細(xì)介紹這兩種技術(shù)的整合應(yīng)用。 Langchain是一個

    2024年01月19日
    瀏覽(25)
  • 使用 LangChain 構(gòu)建 LLM 應(yīng)用詳細(xì)教程(附python代碼演練)

    使用 LangChain 構(gòu)建 LLM 應(yīng)用詳細(xì)教程(附python代碼演練)

    介紹 歡迎來到語言處理的未來!在一個語言是連接人與技術(shù)的橋梁的世界中,自然語言處理(NLP)的進(jìn)步為我們帶來了令人難以置信的機(jī)會。其中一個重要的進(jìn)步是革命性的語言模型,即大型語言模型(LLM),它徹底改變了我們與基于文本的數(shù)據(jù)進(jìn)行交互的方式。我們將探索

    2024年01月24日
    瀏覽(25)
  • LangChain入門:構(gòu)建LLM驅(qū)動的應(yīng)用程序的初學(xué)者指南

    LangChain入門:構(gòu)建LLM驅(qū)動的應(yīng)用程序的初學(xué)者指南

    LangChain DemoGPT ????????你有沒有想過如何使用大型語言模型(LLM)構(gòu)建強(qiáng)大的應(yīng)用程序?或者,也許您正在尋找一種簡化的方式來開發(fā)這些應(yīng)用程序?那么你來對地方了!本指南將向您介紹LangChain,這是一個簡化構(gòu)建LLM驅(qū)動的應(yīng)用程序的過程的工具。我們還將深入研究?

    2024年02月12日
    瀏覽(29)
  • 【ChatGPT】使用 LangChain 和 Ray 實現(xiàn) 100 行代碼構(gòu)建 LLM 開源搜索引擎【1】

    目錄 Introduction Building the index?構(gòu)建索引 Accelerating indexing using Ray?使用 Ray 加速索引編制 Serving

    2024年02月08日
    瀏覽(17)
  • Java-langchain:在Java環(huán)境中構(gòu)建強(qiáng)大的基于LLM的應(yīng)用程序

    Java-langchain : 一個Java 8+的LangChain實現(xiàn)。在(企業(yè))Java環(huán)境中構(gòu)建強(qiáng)大的基于LLM的應(yīng)用程序。 這里持續(xù)連載詳細(xì)的Java入門的LLM學(xué)習(xí)課程。課程分四個部分: 面向開發(fā)者的提示工程 (promptdevelopment) 搭建基于 ChatGPT 的問答系統(tǒng) (chagptapi) 使用 LangChain 開發(fā)應(yīng)用程序 (langchain) 使用 Lang

    2024年02月21日
    瀏覽(20)
  • 利用 Elasticsearch、ESRE、LLM 和 LangChain 加速制藥行業(yè)的研發(fā) — 第 1 部分

    利用 Elasticsearch、ESRE、LLM 和 LangChain 加速制藥行業(yè)的研發(fā) — 第 1 部分

    作者:Valerio Arvizzigno, Dimitri Marx, Francesco Di Stefano 這是一篇通過生成式 AI/LLM、自定義模型和 Elasticsearch 相關(guān)性引擎 (ESRE??) 支持制藥行業(yè)更快的藥物創(chuàng)新和發(fā)現(xiàn)的綜合指南。更快的藥物發(fā)現(xiàn)帶來有前途的候選藥物是制藥行業(yè)的主要目標(biāo)。 為了支持這一目標(biāo),該行業(yè)必須找到

    2024年02月16日
    瀏覽(17)
  • LLM本地知識庫問答系統(tǒng)(一):使用LangChain和LlamaIndex從零構(gòu)建PDF聊天機(jī)器人指南

    LLM本地知識庫問答系統(tǒng)(一):使用LangChain和LlamaIndex從零構(gòu)建PDF聊天機(jī)器人指南

    ? ? ? ?隨著大型語言模型(LLM)(如ChatGPT和GPT-4)的興起,現(xiàn)在比以往任何時候都更容易構(gòu)建比普通熊更智能的智能聊天機(jī)器人,并且可以瀏覽堆積如山的文檔,為您的輸入提供準(zhǔn)確的響應(yīng)。 ? ? ? ?在本系列中,我們將探索如何使用pre-trained的LLM創(chuàng)建一個聊天機(jī)器人,該聊

    2024年02月11日
    瀏覽(100)
  • 理解構(gòu)建LLM驅(qū)動的聊天機(jī)器人時的向量數(shù)據(jù)庫檢索的局限性 - (第1/3部分)

    理解構(gòu)建LLM驅(qū)動的聊天機(jī)器人時的向量數(shù)據(jù)庫檢索的局限性 - (第1/3部分)

    本博客是一系列文章中的第一篇,解釋了為什么使用大型語言模型( LLM )部署專用領(lǐng)域聊天機(jī)器人的主流管道成本太高且效率低下。在第一篇文章中,我們將討論為什么矢量數(shù)據(jù)庫盡管最近流行起來,但在實際生產(chǎn)管道中部署時從根本上受到限制。在下面的文章中,我們說

    2024年02月14日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包