自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

基于LangChain+Langflow+Astra DB開發(fā)RAG聊天機(jī)器人 原創(chuàng)

發(fā)布于 2024-9-2 08:13
瀏覽
0收藏

本文將介紹如何借助于Langflow的直觀GUI界面來創(chuàng)建一個(gè)RAG聊天機(jī)器人的完整過程,期間將LLM與向量數(shù)據(jù)庫集成以實(shí)現(xiàn)上下文驅(qū)動(dòng)的響應(yīng)。

簡(jiǎn)介

檢索增強(qiáng)生成(Retrieval Augmented Generation,簡(jiǎn)稱“RAG”)是一種自然語言過程,它涉及將傳統(tǒng)檢索技術(shù)與LLM(大型語言模型)相結(jié)合,通過將生成屬性與檢索提供的上下文相結(jié)合來生成更準(zhǔn)確和相關(guān)的文本。最近,這種技術(shù)在聊天機(jī)器人開發(fā)中得到了廣泛的應(yīng)用,使公司能夠通過使用其數(shù)據(jù)定制的尖端LLM模型來改善與客戶的自動(dòng)化通信。

Langflow(https://github.com/langflow-ai/langflow)是Langchain的圖形用戶界面,Langchain是LLM的集中式開發(fā)環(huán)境。早在2022年10月,LangChain就發(fā)布了,到2023年6月,它已成為GitHub上使用最多的開源項(xiàng)目之一。可以說,如今LangChain席卷了整個(gè)人工智能社區(qū),特別是為創(chuàng)建和定制多個(gè)LLM而開發(fā)的框架,這些LLM具有與最相關(guān)的文本生成和嵌入模型集成、鏈接LLM調(diào)用的可能性、管理提示的能力、配備向量數(shù)據(jù)庫以加速計(jì)算的選項(xiàng),以及將結(jié)果順利交付給外部API和任務(wù)流等功能。

在這篇文章中,我們將使用著名的開源泰坦尼克號(hào)(Titanic)數(shù)據(jù)集(https://www.kaggle.com/datasets/vinicius150987/titanic3)展示如何使用Langflow開發(fā)一個(gè)完整的端到端RAG聊天機(jī)器人。

使用Langflow平臺(tái)開發(fā)RAG聊天機(jī)器人

首先,需要在Langflow平臺(tái)(https://astra.datastax.com/langflow/)進(jìn)行注冊(cè)。為了開始一個(gè)新項(xiàng)目,可以根據(jù)用戶需求快速定制一些有用的預(yù)構(gòu)建流程。本文中要?jiǎng)?chuàng)建一個(gè)RAG聊天機(jī)器人程序,最好的選擇是使用向量存儲(chǔ)(Vector Store)RAG模板。圖1顯示了這種方案的原始操作流程。

基于LangChain+Langflow+Astra DB開發(fā)RAG聊天機(jī)器人-AI.x社區(qū)

圖1:Langflow向量存儲(chǔ)RAG模板流

在上述模板中,為嵌入和文本生成預(yù)先選擇了OpenAI,這些是本文中使用的技術(shù);但是,其他一些選項(xiàng),如Ollama、NVIDIA和Amazon Bedrock等,也都是可用的,只需設(shè)置相關(guān)的API密鑰即可輕松將其集成。值得注意的是,在使用與LLM提供程序的集成之前,要檢查所選的集成是否在配置上處于活動(dòng)狀態(tài),如下圖2所示。此外,可以定義全局變量,如API鍵和模型名稱,以便于對(duì)流對(duì)象進(jìn)行輸入。

基于LangChain+Langflow+Astra DB開發(fā)RAG聊天機(jī)器人-AI.x社區(qū)

圖2:OpenAI集成和概述的界面

向量存儲(chǔ)Rag模板上提供了兩種不同類型的流。其中,下面的一個(gè)顯示了Rag的檢索部分,其中通過上傳文檔、拆分、嵌入,然后將其保存到Astra DB(【譯者注】。Astra DB是一個(gè)基于Apache Cassandra的開源云原生數(shù)據(jù)庫服務(wù),它提供了強(qiáng)大的向量存儲(chǔ)能力,非常適合用于構(gòu)建RAG系統(tǒng))上的向量數(shù)據(jù)庫中來提供上下文,該數(shù)據(jù)庫可以在流界面上輕松創(chuàng)建。

目前,默認(rèn)情況下,Astra DB對(duì)象能夠自動(dòng)檢索Astra DB應(yīng)用程序令牌,因此甚至不需要收集它。最后,需要?jiǎng)?chuàng)建將嵌入值存儲(chǔ)在向量DB中的集合。為了正確存儲(chǔ)嵌入結(jié)果,集合維度需要與文檔中提供的嵌入模型中的維度相匹配。因此,如果你選擇的嵌入模型是OpenAI的text-embedding-3-small的話,那么創(chuàng)建的集合維度必須是1536。下圖3顯示了完整的檢索流程。

基于LangChain+Langflow+Astra DB開發(fā)RAG聊天機(jī)器人-AI.x社區(qū)

圖3:泰坦尼克號(hào)數(shù)據(jù)集的檢索流程

用于增強(qiáng)聊天機(jī)器人上下文的數(shù)據(jù)集是Titanic數(shù)據(jù)集(https://www.kaggle.com/datasets/yasserh/titanic-dataset?resource=download,CC0許可證)。在RAG流程結(jié)束時(shí),聊天機(jī)器人應(yīng)該能夠提供具體的細(xì)節(jié)并回答有關(guān)乘客的復(fù)雜問題。但首先,我們需要在通用文件加載器對(duì)象上更新文件,然后使用全局變量“separator;”對(duì)其進(jìn)行拆分,因?yàn)樵几袷绞荂SV。此外,塊重疊和塊大小需要設(shè)置為0,因?yàn)橥ㄟ^使用分隔符,每個(gè)塊都將描述為一個(gè)乘客對(duì)應(yīng)數(shù)據(jù)。如果輸入文件是純文本格式,那么,有必要應(yīng)用塊重疊和大小設(shè)置來正確創(chuàng)建嵌入。為了完成流程,向量存儲(chǔ)在demo_assistente數(shù)據(jù)庫的titanic_vector_db中。

基于LangChain+Langflow+Astra DB開發(fā)RAG聊天機(jī)器人-AI.x社區(qū)

圖4:完整的生成流程

接下來,讓我們轉(zhuǎn)到RAG的生成流程,如圖4所示,它是由聊天中的用戶輸入觸發(fā)的,然后搜索到數(shù)據(jù)庫中,為以后的提示提供上下文。因此,如果用戶在輸入中詢問與名稱“Owen”相關(guān)的內(nèi)容的話,搜索將在向量數(shù)據(jù)庫的集合中運(yùn)行,尋找與“Owen“相關(guān)的向量,然后檢索并通過解析器運(yùn)行它們以便將其轉(zhuǎn)換為文本,最后獲得稍后提示所需的上下文。圖5顯示了相應(yīng)的搜索結(jié)果。

基于LangChain+Langflow+Astra DB開發(fā)RAG聊天機(jī)器人-AI.x社區(qū)

圖5:在向量數(shù)據(jù)庫中進(jìn)行搜索以獲取上下文的結(jié)果

回到一開始,使用檢索流中的相同模型將嵌入模型再次連接到向量數(shù)據(jù)庫以運(yùn)行有效搜索也是很關(guān)鍵的一步;否則的話,由于檢索和生成流中使用的嵌入模型的不同,會(huì)導(dǎo)致檢索結(jié)果內(nèi)容總是空的。此外,這一步證明了在RAG中使用向量DB的巨大性能優(yōu)勢(shì),在RAG中將上下文快速檢索并傳遞給提示,然后才能對(duì)用戶做出任何類型的響應(yīng)。

在圖6所示的提示中,上下文來自已轉(zhuǎn)換為文本的解析器,問題來自原始用戶輸入。下圖顯示了如何構(gòu)建提示,并將上下文與問題結(jié)合起來。

基于LangChain+Langflow+Astra DB開發(fā)RAG聊天機(jī)器人-AI.x社區(qū)

圖6:將傳遞給AI模型的提示信息

提示寫好后,是時(shí)候使用文本生成模型了。在此流程中,我們選擇使用GPT4模型,其溫度參數(shù)(temperature)設(shè)置為0.5,這是聊天機(jī)器人的標(biāo)準(zhǔn)推薦參數(shù)值。溫度參數(shù)將控制著LLM預(yù)測(cè)的隨機(jī)性。一個(gè)較低數(shù)值的溫度參數(shù)將產(chǎn)生更確定和直接的答案,從而產(chǎn)生更可預(yù)測(cè)的文本。相對(duì)來說,一個(gè)較高數(shù)值的溫度參數(shù)將產(chǎn)生更具創(chuàng)造性的輸出——盡管這個(gè)參數(shù)值太高時(shí),模型很容易產(chǎn)生幻覺并產(chǎn)生不連貫的文本。最后,只需使用全局變量和OpenAI的API鍵設(shè)置API鍵,這一步就很容易了。接下來,是時(shí)候運(yùn)行完整的流程并在Playground交互環(huán)境上檢查一下運(yùn)行結(jié)果了。

基于LangChain+Langflow+Astra DB開發(fā)RAG聊天機(jī)器人-AI.x社區(qū)

圖7:Playground交互環(huán)境顯示RAG聊天機(jī)器人的運(yùn)行結(jié)果

圖7中的對(duì)話清楚地表明,聊天機(jī)器人能夠正確地獲取上下文,并正確地回答了有關(guān)乘客的詳細(xì)問題。盡管發(fā)現(xiàn)泰坦尼克號(hào)上沒有羅斯或杰克可能會(huì)令人失望,但不幸的是,這是真的?,F(xiàn)在,RAG聊天機(jī)器人已經(jīng)創(chuàng)建結(jié)束;我們還可以繼續(xù)增強(qiáng)其功能以提高會(huì)話性能并覆蓋一些可能的“誤解”,但是本文主要展示Langflow框架如何輕松地適應(yīng)和定制LLM。

小結(jié)

最后,我們來介紹一下流部署的問題。當(dāng)前,存在多種可以供參考的部署方案。HuggingFace Spaces是一種部署RAG聊天機(jī)器人的簡(jiǎn)單方法,它具有可擴(kuò)展的硬件基礎(chǔ)設(shè)施和本地Langflow,不需要任何安裝。當(dāng)然,Langflow也可以通過Kubernetes集群、Docker容器安裝和使用,也可以通過VM和Google Cloud Shell直接在GCP中安裝和使用。有關(guān)部署的更多信息,請(qǐng)參閱此框架有關(guān)文檔(https://docs.langflow.org/deployment-hugging-face-spaces)。

總之,新時(shí)代即將到來,低代碼解決方案開始為人工智能在不久的將來在現(xiàn)實(shí)世界中的發(fā)展定下基調(diào)。本文介紹了Langflow如何通過直觀的UI和模板集中多種集成來徹底改變?nèi)斯ぶ悄?。如今,任何具備人工智能基礎(chǔ)知識(shí)的人都可以構(gòu)建一個(gè)復(fù)雜的應(yīng)用程序——這種程序的開發(fā)在本世紀(jì)初的話需要大量的編碼和深度學(xué)習(xí)框架專業(yè)知識(shí)。

譯者介紹

朱先忠,51CTO社區(qū)編輯,51CTO專家博客、講師,濰坊一所高校計(jì)算機(jī)教師,自由編程界老兵一枚。

原文標(biāo)題:??Creating a RAG Chatbot with Langflow and Astra DB??,作者:Bruno Caraffa


?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
已于2024-9-2 10:16:48修改
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦