基于大模型的智能問答系統(tǒng)
在構(gòu)建基于大模型的智能問答系統(tǒng)時,LangChain 提供了一個強(qiáng)大的框架,支持各種模塊來幫助開發(fā)者構(gòu)建更復(fù)雜、更智能的語言處理應(yīng)用。以下是構(gòu)建此類系統(tǒng)的一些關(guān)鍵組件和步驟。
模型接入:使用 LangChain 支持的模型,通過 API 接入外部模型,或利用 api-for-open-llm 框架調(diào)用 本地llm模型。
向量庫與嵌入模型:利用 Milvus 向量庫和嵌入模型(如 m3e 向量模型)來增強(qiáng)問答系統(tǒng)的檢索能力,使其能夠從大量文本數(shù)據(jù)中快速檢索相關(guān)信息。
鏈?zhǔn)秸{(diào)用和代理行動決策:使用 LangChain 的鏈(Chains)和代理(Agents)模塊來構(gòu)建復(fù)雜的問答邏輯,使系統(tǒng)能夠根據(jù)用戶輸入做出連貫的決策并提供相關(guān)的回答。
提示詞寫法:根據(jù)需要編寫適當(dāng)?shù)奶崾驹~,以引導(dǎo)模型提供準(zhǔn)確的回答。可以使用 XML 標(biāo)記來定義上下文和歷史記錄,以便模型更好地理解問題和背景。
通過以上步驟,可以構(gòu)建一個基于大模型的智能問答系統(tǒng),該系統(tǒng)能夠理解用戶的問題并提供準(zhǔn)確、相關(guān)的回答。此外,通過不斷優(yōu)化模型、提示詞和檢索策略,可以進(jìn)一步提高問答系統(tǒng)的性能和用戶體驗。
langchain/dify的智能體
Langchain支持各種模型的接入、提示詞管理、基于向量庫的檢索增強(qiáng)、索引優(yōu)化、鏈?zhǔn)秸{(diào)用和代理行動決策,適用于創(chuàng)建自治代理、模擬、個人助理、問答系統(tǒng)、聊天機(jī)器人、數(shù)據(jù)查詢、代碼理解、API交互、信息提取、文本摘要和模型評估等多種應(yīng)用場景。
dify則是國內(nèi)開源的一個agent平臺,類似于帶界面的Langchain。
milvus向量庫
Milvus是在2019年創(chuàng)建的,其唯一目標(biāo)是存儲、索引和管理由深度神經(jīng)網(wǎng)絡(luò)和其他機(jī)器學(xué)習(xí)(ML)模型生成的大規(guī)模嵌入向量。
作為一個專門設(shè)計用于處理輸入向量查詢的數(shù)據(jù)庫,它能夠處理萬億級別的向量索引。與現(xiàn)有的關(guān)系型數(shù)據(jù)庫主要處理遵循預(yù)定義模式的結(jié)構(gòu)化數(shù)據(jù)不同,Milvus從底層設(shè)計用于處理從非結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)換而來的嵌入向量。Milvus使得向應(yīng)用中添加相似性搜索變得容易。
嵌入模型
嵌入模型(Embedding Model)是一種在自然語言處理(NLP)和機(jī)器學(xué)習(xí)中廣泛使用的技術(shù),旨在將高維的稀疏數(shù)據(jù)(如單詞、句子或圖像)轉(zhuǎn)換為低維的密集向量表示。這種向量表示能夠捕捉到數(shù)據(jù)的語義信息和結(jié)構(gòu)特征,使得計算機(jī)能夠更有效地處理和分析數(shù)據(jù)。
在NLP中,單詞嵌入(Word Embedding)是最常見的嵌入模型之一。它將每個單詞映射到一個固定長度的實數(shù)向量,使得語義上相似的單詞在向量空間中也相互接近。這種表示方式可以有效地減少數(shù)據(jù)的維度,并捕捉單詞之間的語義關(guān)系,如同義詞、反義詞和上下文相關(guān)性。
嵌入模型通常通過無監(jiān)督學(xué)習(xí)方法從大量文本數(shù)據(jù)中學(xué)習(xí)得到,如Word2Vec、GloVe和fastText等。這些模型利用單詞的共現(xiàn)信息和上下文關(guān)系來學(xué)習(xí)單詞的向量表示。
除了單詞嵌入,還有句子嵌入(Sentence Embedding)、段落嵌入(Paragraph Embedding)和圖像嵌入(Image Embedding)等,它們分別用于將句子、段落和圖像轉(zhuǎn)換為密集向量表示,以便進(jìn)行后續(xù)的機(jī)器學(xué)習(xí)任務(wù),如文本分類、情感分析、圖像識別等。
目前中文嵌入模型效果較好的推薦m3e向量模型。
本地自有模型/外部模型接口
本地部署可以使用api-for-open-llm,該項目是一個開源框架,提供了統(tǒng)一的后端接口,使得以 OpenAI ChatGPT API 的方式調(diào)用各類開源大模型變得簡單。
它支持流式響應(yīng)、文本嵌入模型、langchain 的各類功能,并允許通過簡單修改環(huán)境變量將開源模型作為 ChatGPT 的替代模型。此外,該項目還支持加載自行訓(xùn)練的 lora 模型,以及 vLLM 推理加速和處理并發(fā)請求,為各類應(yīng)用提供強(qiáng)大的后端支持。
接口的話推薦使用gemini,在今年5月份之前gemini還是可以免費使用的。
提示詞寫法
以基于知識庫的官網(wǎng)問答系統(tǒng)的提示詞為例,下面是一個寫好的提示詞樣例:
在XML標(biāo)記中使用以下上下文作為您學(xué)到的知識。{上下文}
當(dāng)回答用戶:-如果你不知道,就說你不知道。
-如果你不知道,當(dāng)你不確定,要求澄清。
避免提到你是從上下文中獲得信息的。并根據(jù)用戶提問的語言進(jìn)行回答。
下面是人與助手之間的聊天歷史記錄,位于<歷史>{聊天記錄} XML標(biāo)記中。
總結(jié)
基于大模型的智能問答系統(tǒng)利用 LangChain 框架和相關(guān)技術(shù),如 Milvus 向量庫和嵌入模型,提供了一個強(qiáng)大的解決方案,用于構(gòu)建理解自然語言并提供準(zhǔn)確回答的系統(tǒng)。通過集成不同的模型、管理提示詞、利用向量檢索和鏈?zhǔn)秸{(diào)用,這個系統(tǒng)能夠處理復(fù)雜的用戶查詢,并根據(jù)上下文提供相關(guān)的信息。此外,系統(tǒng)的靈活性和可擴(kuò)展性使得開發(fā)者可以根據(jù)特定需求定制和優(yōu)化問答邏輯,從而提高用戶體驗和滿意度。