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

問答類任務

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

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、建立向量索引

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

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

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

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

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

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

1、向量化以后的數據膨脹問題

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

4、大模型選擇與微調

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

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

完成大模型微調以后,可以結合任務要求選擇適合的公開數據集進行測評,以驗證微調效果。

二、開源知識庫項目

1. FastGPT

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

功能架構圖如下。可以看到,FastGPT可接入多種LLM,將存入知識庫的知識處理為QA對或問題的形式,向量化后存入數據庫。對話時將提問內容向量化,在數據庫中進行向量相似性搜索,將搜索到的內容發送給LLM進行輸出。

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

2. Anything LLM

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

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

使用步驟

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

3. LangChain-Chatchat

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

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

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

LLM: Chatglm2-6b

Embedding Models: m3e-base

TextSplitter: ChineseRecursiveTextSplitter

Kb_dataset: faiss

結語

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

參考資料

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

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

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

上一篇:

產品經理必備的API技術知識

下一篇:

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

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

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

#AI深度推理大模型API

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

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