基于大模型的智能問(wèn)答系統(tǒng)

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



































