"This is a positive sentence." Positive
"Negative sentiment in this text." Negative
"Neutral statement here." Neutral

問答類任務

數(shù)據(jù)通常包括問題和相應的答案,當需要結(jié)合上下文信息理解問題語境時,通常還需要加上上下文信息,樣本格式示例:

Context                                   Question                            Answer
"The Eiffel Tower is located in Paris." "Where is the Eiffel Tower?" "Paris"
"There are nine planets in our solar system, including Earth."
"How many planets are there?" "Nine"
"William Shakespeare, a famous playwright, wrote 'Romeo and Juliet'."
"Who is the author of this play?" "William Shakespeare"
"Guacamole is a popular Mexican dish made with mashed avocados."
"What is the main ingredient?" "Avocado"

3、建立向量索引

將文檔分塊以后,通常需要對每個分塊建立索引用于后續(xù)的檢索。

常見的建立索引的方法如下:

其中,建立向量索引是當下最為流行的一種方法。首先,通過embedding模型將高維度的數(shù)據(jù)映射到低維空間生成向量表示,再對這些向量進行索引和搜索。

embedding模型需要根據(jù)任務的性質(zhì)和輸入數(shù)據(jù)的特點進行選擇。以文本嵌入為例,早期的有Word2Vec、GloVe等模型,現(xiàn)在常用的有 Sentence Transformers、OpenAI的text-embedding-ada-002等。為了更好地匹配數(shù)據(jù)類型和任務性質(zhì),還需要對embedding模型進行微調(diào)處理。

為分塊的文檔生成向量表示后,通常采用相似度檢索的方式進行查詢,可以采用內(nèi)積、歐式距離、余弦距離等方法,其中余弦距離最為常用。

在實際應用中,建立向量索引和查詢存在以下需要考慮的問題,可能并不全面,提出來供大家討論:

1、向量化以后的數(shù)據(jù)膨脹問題

2、大規(guī)模向量相似性檢索的效率問題

4、大模型選擇與微調(diào)

目前已經(jīng)開源的大模型項目有很多,如何選擇適合的大模型,可結(jié)合任務類型、算力水平等因素綜合考慮,具體可參考之前的文章《該選多大參數(shù)量的大模型?》

如果基礎預訓練大模型無法滿足在特定任務上的應用要求,還需要對模型進行微調(diào)。目前常用的高效微調(diào)方法主要有LoRA、P- Tuning、Prompt Tuning等,能夠以較低的數(shù)據(jù)量,以及算力和時間的投入取得較好的微調(diào)效果。

完成大模型微調(diào)以后,可以結(jié)合任務要求選擇適合的公開數(shù)據(jù)集進行測評,以驗證微調(diào)效果。

二、開源知識庫項目

1. FastGPT

FastGPT是一個基于 LLM 大語言模型的知識庫問答系統(tǒng),提供開箱即用的數(shù)據(jù)處理、模型調(diào)用等能力。同時可以通過 Flow 可視化進行工作流編排,從而實現(xiàn)復雜的問答場景。項目地址:https://github.com/labring/FastGPT。

功能架構(gòu)圖如下。可以看到,F(xiàn)astGPT可接入多種LLM,將存入知識庫的知識處理為QA對或問題的形式,向量化后存入數(shù)據(jù)庫。對話時將提問內(nèi)容向量化,在數(shù)據(jù)庫中進行向量相似性搜索,將搜索到的內(nèi)容發(fā)送給LLM進行輸出。

應用FastGPT時,首先要創(chuàng)建一個知識庫,在知識庫中上傳文檔后自動生成QA對或分塊,然后再創(chuàng)建一個對話式的應用并與創(chuàng)建的知識庫相關聯(lián),這樣大模型在回答時就能夠應用到我們創(chuàng)建的知識庫中的知識。

2. Anything LLM

Anything LLM是一個開源的企業(yè)智能知識庫解決方案,能夠通過聊天的形式,快速地獲取曾經(jīng)喂給它的任何信息。

目前可以通過https://useanything.com/免費試用。

使用步驟

  1. 選擇使用的大模型:目前提供OpenAI,Azure OpenAI和Anthropic Claude 2三種大模型可供選擇,后續(xù)的版本中將允許用戶使用自己的大模型;
  2. 選擇向量數(shù)據(jù)庫:目前提供Chroma、Pinecone、Qdrant、Weaviate和LanceDB,默認使用LanceDB;
  3. 可定制界面和使用方式:用戶可自定義logo;支持個人使用or團隊使用,進行相關配置即可;
  4. 創(chuàng)建workspace:用于上傳與LLM對話時需要用到的文檔;上傳的文檔可以在多個workspace中進行復用。在workspace中可定義“temperature”這個參數(shù),它主要影響LLM回答的隨機性和創(chuàng)造性;此外,可以配置展示歷史對話的個數(shù),以及自定義對話的prompt。
  5. 進行對話:對話時大模型能夠根據(jù)上傳的文檔進行回答,并展示引用的文檔以及具體段落,確保回答可信可溯源。

3. LangChain-Chatchat

LangChain-Chatchat(原LangChain-ChatGLM),基于ChatGLM等大模型與LangChain等應用框架實現(xiàn),是一款開源、可離線部署的RAG大模型知識庫項目,能夠解決數(shù)據(jù)安全保護、私域化部署的企業(yè)痛點。

實現(xiàn)原理如下圖所示。過程包括加載文件 -> 讀取文本 -> 文本分割 -> 文本向量化 -> 問句向量化 -> 在文本向量中匹配出與問句向量最相似的 top k個 -> 匹配出的文本作為上下文和問題一起添加到 prompt中 -> 提交給 LLM生成回答。

在最佳實踐中推薦的模型組合如下,用戶也可以根據(jù)需要自由選擇,目前項目支持的大模型、向量數(shù)據(jù)庫、開源embedding模型等非常豐富,可通過官方wiki進行查看。

LLM: Chatglm2-6b

Embedding Models: m3e-base

TextSplitter: ChineseRecursiveTextSplitter

Kb_dataset: faiss

結(jié)語

基于RAG與LLM的知識庫作為目前最有潛力的企業(yè)端大模型應用之一,從技術角度可以看到,建設方案已經(jīng)完備;從業(yè)務角度,最終的應用效果和業(yè)務價值還需要觀察,并通過業(yè)務側(cè)的反饋不斷地促進建設方案的進一步優(yōu)化,比如增加對多模態(tài)知識的處理能力等。讓我們共同期待這類應用普及那一天的到來。

參考資料

1、萬字長文:檢索增強LLM

2、RAG 分塊Chunk技術優(yōu)劣、技巧、方法匯總(五)

3、https://github.com/labring/FastGPT

4、https://github.com/Mintplex-Labs/anything-llm

5、hhttps://github.com/chatchat-space/Langchain-Chatchat/wiki

本文來源:

https://mp.weixin.qq.com/s/Tqj-traqFWogbQCUeCXtiw

https://mp.weixin.qq.com/s/RqD_4EaonrcaCg8pI6tNsw

上一篇:

產(chǎn)品經(jīng)理必備的API技術知識

下一篇:

AI辦公工具類API幫助開發(fā)者快速集成辦公應用
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數(shù)據(jù)驅(qū)動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費