??在文章NLP(六十)Baichuan-13B-Chat模型使用體驗中,我們介紹了Baichuan-13B-Chat模型及其在向量嵌入和文檔閱讀上的初步嘗試。
??本文將詳細介紹如何使用Baichuan-13B-Chat模型來構建智能文檔問答助手。
文檔問答流程
??智能文檔問答助手的流程圖如下:
- 文檔加載(Document Loading):加載文檔,文檔格式為URL,PDF,Database。本項目暫時先支持txt文件,后續(xù)將支持更多文件格式;
- 文檔劃分(Splitting):將文檔按照特定格式進行劃分,形成文檔片段。本項目采用的文檔劃分方式為LangChain中的RecursiveCharacterTextSplitter,參考網(wǎng)址為:https://python.langchain.com/docs/modules/data_connection/document_transformers/text_splitters/recursive_text_splitter。
- 文檔存儲(Storage):將劃分后的文檔進行向量嵌入,再插入至向量數(shù)據(jù)庫。本項目采用的儲存方式為ElasticSearch及向量數(shù)據(jù)庫Milvus。
- 文檔召回:對于輸入query,從文檔存儲中召回相關文檔片段。本項目采用的召回方式為ElasticSearch中的內置BM25相似度算法及Milvus中的向量距離。
- 問答輸出:對于召回文檔和輸入query,構建合適的Prompt,利用大模型(LLM)輸出最終答案。
??下面講介紹細節(jié)。本項目已在Github上開源,項目網(wǎng)址為:https://github.com/percent4/document_qa_with_llm 。
環(huán)境搭建
??本項目開發(fā)的Web框架為Flask,API接口兩個:文件上傳接口和文檔問答接口。文件上傳接口如下:
??文檔召回采用ElasticSearch和Milvus相結合的方式,設置ElasticSearch和Milvus召回最相似文本數(shù)量為2。
??ElasticSearch中創(chuàng)建的index為docs,mapping結構如下:
{
"docs" : {
"mappings" : {
"properties" : {
"cont_id" : {
"type" : "integer"
},
"content" : {
"type" : "text",
"analyzer" : "ik_smart"
},
"source" : {
"type" : "text"
}
}
}
}
}
其中source代表上傳文檔名稱,cont_id為文本片段編號,content為文本片段。content
字段采用的analyzer為ik_smart
,該analyzer可較好地對中文進行分詞。
??Milvus創(chuàng)建的collection為docs_qa,schema如下:
embeddings
字段為Baichuan-13B-Chat模型的文本向量嵌入,向量維度為512,范數(shù)為1(即單位向量),搜索距離度量采用IP
,即兩個向量的內積。
??大模型采用Baichuan-13B-Chat,主要用于文本片段的向量嵌入和文檔問答。關于Baichuan-13B-Chat模型的部署和使用,可參考文章NLP(六十)Baichuan-13B-Chat模型使用體驗。
文檔問答
??本文使用的文檔為《封神》耗資30億,第一部上映第次日,北京文化跌停
,訪問網(wǎng)址為:https://m.jrj.com.cn/madapter/stock/2023/07/22141537710254.shtml ,將其文本內容保存為txt文件,并通過文件上傳接口,將數(shù)據(jù)內容插入至ES和Milvus。
??我們的問題(輸入query)為:封神第一部什么時候上映的?
,對其進行向量嵌入,在ES和Milvus中召回的相似文本為:
《封神》耗資30億,第一部上映第次日,北京文化跌停熱點快報 2023-07-22 14:15:04《封神第一部》剛剛上映,北京文化股價卻出現(xiàn)下跌。7月21日,A股影視傳媒板塊震蕩下挫,北京文化收于跌停,報7.56元,總市值54.12億元,板塊內個股慈文傳媒、榮信文化、中國出版、上海電影等跟跌。值得關注的是,《封神第一部》7月20日才正式上映,北京文化為該影片的出品方。
落地誤差只有1公里,3條飛船實現(xiàn)了第一階段的全部任務。
北京文化曾成功投資《我不是藥神》《戰(zhàn)狼》《流浪地球》《你好,李煥英》等多部爆款影片。此前《封神第一部》宣布定檔,北京文化曾迎來3連板。
??大模型問答的Prompt為:
[
{
"role": "system",
"content": "你是一個出色的文檔問答助手,回答要合理、簡潔,回復語言采用中文,。若問題與文本片段相關,請根據(jù)給定的文本片段和問題,答案以\"根據(jù)文檔知識\"開頭若問題與文本片段相關性較小,則使用外部知識回答問題,答案以\"根據(jù)外部知識\"開頭。"
},
{
"role": "user",
"content": "使用下面的文本片段列表,回答問題:封神第一部什么時候上映的?\n\n文本片段1: 《封神》耗資30億,第一部上映第次日,北京文化跌停熱點快報 2023-07-22 14:15:04《封神第一部》剛剛上映,北京文化股價卻出現(xiàn)下跌。7月21日,A股影視傳媒板塊震蕩下挫,北京文化收于跌停,報7.56元,總市值54.12億元,板塊內個股慈文傳媒、榮信文化、中國出版、上海電影等跟跌。值得關注的是,《封神第一部》7月20日才正式上映,北京文化為該影片的出品方。\n文本片段2: 落地誤差只有1公里,3條飛船實現(xiàn)了第一階段的全部任務。\n文本片段3: 北京文化曾成功投資《我不是藥神》《戰(zhàn)狼》《流浪地球》《你好,李煥英》等多部爆款影片。此前《封神第一部》宣布定檔,北京文化曾迎來3連板。\n"
}
]
輸出答案為:
根據(jù)文檔知識,《封神第一部》于2023年7月20日上映。
更多測試內容可參考本項目的Github網(wǎng)址。
總結
??本項目的Github網(wǎng)址為:https://github.com/percent4/document_qa_with_llm ,后續(xù)將持續(xù)優(yōu)化這個項目,提升文檔問答的方便性和智能性。
??本文詳細介紹了如何使用Baichuan-13B-Chat模型來構建智能文檔問答助手,希望能給讀者們一些啟發(fā)。
??歡迎關注我的公眾號NLP奇幻之旅,原創(chuàng)技術文章第一時間推送。文章來源:http://www.zghlxwxcb.cn/news/detail-609933.html

??歡迎關注我的知識星球“自然語言處理奇幻之旅”,筆者正在努力構建自己的技術社區(qū)。文章來源地址http://www.zghlxwxcb.cn/news/detail-609933.html

到了這里,關于NLP(六十一)使用Baichuan-13B-Chat模型構建智能文檔問答助手的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!