RAG實(shí)戰(zhàn)3-如何追蹤哪些文檔片段被用于檢索增強(qiáng)生成
本文是RAG實(shí)戰(zhàn)2-如何使用LlamaIndex存儲(chǔ)和讀取embedding向量的續(xù)集,在閱讀本文之前請(qǐng)先閱讀前篇。
在前篇中,我們介紹了如何使用LlamaIndex存儲(chǔ)和讀取embedding向量。在本文中,我們將介紹在LlamaIndex中如何獲得被用于檢索增強(qiáng)生成的文檔片段。
下面的代碼展示了如何使用LlamaIndex追蹤哪些文檔片段被用于檢索增強(qiáng)生成:
import logging
import sys
import torch
from llama_index.core import PromptTemplate, Settings, StorageContext, load_index_from_storage, QueryBundle
from llama_index.core.schema import MetadataMode
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from llama_index.llms.huggingface import HuggingFaceLLM
# 定義日志
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))
# 定義system prompt
SYSTEM_PROMPT = """You are a helpful AI assistant."""
query_wrapper_prompt = PromptTemplate(
"[INST]<<SYS>>\n" + SYSTEM_PROMPT + "<</SYS>>\n\n{query_str}[/INST] "
)
# 使用llama-index創(chuàng)建本地大模型
llm = HuggingFaceLLM(
context_window=4096,
max_new_tokens=2048,
generate_kwargs={"temperature": 0.0, "do_sample": False},
query_wrapper_prompt=query_wrapper_prompt,
tokenizer_name='/yldm0226/models/Qwen1.5-14B-Chat',
model_name='/yldm0226/models/Qwen1.5-14B-Chat',
device_map="auto",
model_kwargs={"torch_dtype": torch.float16},
)
Settings.llm = llm
# 使用llama-index-embeddings-huggingface構(gòu)建本地embedding模型
Settings.embed_model = HuggingFaceEmbedding(
model_name="/yldm0226/RAG/BAAI/bge-base-zh-v1.5"
)
# 從存儲(chǔ)文件中讀取embedding向量和向量索引
storage_context = StorageContext.from_defaults(persist_dir="doc_emb")
index = load_index_from_storage(storage_context)
# 構(gòu)建查詢引擎
query_engine = index.as_query_engine(similarity_top_k=5)
# 獲取我們抽取出的相似度前五的片段
contexts = query_engine.retrieve(QueryBundle("不耐疲勞,口燥、咽干可能是哪些證候?"))
print('-'*10 + 'ref' + '-'*10)
for i, context in enumerate(contexts):
print('*'*10 + f'chunk {i} start' + '*'*10)
content = context.node.get_content(metadata_mode=MetadataMode.LLM)
print(content)
print('*' * 10 + f'chunk {i} end' + '*' * 10)
print('-'*10 + 'ref' + '-'*10)
# 查詢獲得答案
response = query_engine.query("不耐疲勞,口燥、咽干可能是哪些證候?")
print(response)
運(yùn)行代碼,可以得到query的輸出為:
從提供的中醫(yī)臨床證候信息來看,口燥、咽干的癥狀可能與以下證候相關(guān):
1. 津液不足證:由于津液生成不足或者體內(nèi)燥熱導(dǎo)致,表現(xiàn)為口眼喉鼻干燥,咽干是其中的一個(gè)癥狀。
2. 津虧熱結(jié)證:津液虧虛加上熱邪內(nèi)結(jié),也可能出現(xiàn)口燥和咽干。
3. 津液虧涸證:嚴(yán)重的津液虧損可能導(dǎo)致口唇干燥、咽部干燥,伴隨其他嚴(yán)重脫水癥狀。
4. 燥干清竅證:氣候干燥或體質(zhì)原因引起的津液缺乏,口鼻咽喉干燥也是其特征。
5. 津傷化燥證:燥熱內(nèi)蘊(yùn)或內(nèi)熱化燥損傷津液,也會(huì)出現(xiàn)口燥、頻飲但不解渴的現(xiàn)象。
因此,這些證候都有可能與不耐疲勞和口燥、咽干的癥狀相符合,需要結(jié)合其他臨床表現(xiàn)來確定具體的證候類型。建議在中醫(yī)診斷中由專業(yè)醫(yī)生根據(jù)全人情況判斷。
對(duì)于"不耐疲勞,口燥、咽干可能是哪些證候?"這個(gè)查詢,其相似度前五的片段如下:
片段序號(hào) | 片段信息 |
---|---|
1 | file_path: document/中醫(yī)臨床診療術(shù)語證候.txt 4.6.1.1 津液不足證 syndrome/pattern of fluid and humor insufficiency 津虧證 因津液生成不足,或嗜食辛辣,蘊(yùn)熱化燥,邪熱灼損津液所致。臨床以口眼喉鼻及皮膚等干燥,大便干結(jié),小便短少,舌質(zhì)偏紅而干,脈細(xì)數(shù)等為特征的證候。 4.6.1. |
2 | file_path: document/中醫(yī)臨床診療術(shù)語證候.txt 臨床以口干、舌燥,頻飲而不解其渴,食多、善饑,夜尿頻多,逐漸消瘦,舌質(zhì)紅,舌苔薄黃或少,脈弦細(xì)或滑數(shù),伴見皮膚干燥,四肢乏力,大便干結(jié)等為特征的證候。 4.6.3.2 津虧熱結(jié)證 syndrome/pattern of fluid depletion and heat binding 液干熱結(jié)證 因津液虧虛,熱邪內(nèi)結(jié)所致。 |
3 | file_path: document/中醫(yī)臨床診療術(shù)語證候.txt 臨床以口眼喉鼻及皮膚等干燥,大便干結(jié),小便短少,舌質(zhì)偏紅而干,脈細(xì)數(shù)等為特征的證候。 4.6.1.2 津液虧涸證 syndrome/pattern of fluid and humor scantiness 津液虧耗證 津液干枯證 因津液虧損,形體官竅失養(yǎng)所致。臨床以口干、唇裂,鼻燥無涕,皮膚干癟,目陷、螺癟,甚則肌膚甲錯(cuò),舌質(zhì)紅而少津,舌中裂,脈細(xì)或數(shù),可伴見口渴、欲飲,干咳,目澀,大便干,小便少等為特征的證候。 |
4 | file_path: document/中醫(yī)臨床診療術(shù)語證候.txt 臨床以鼻咽干澀或痛,口唇燥干,舌質(zhì)紅,舌苔白或燥,脈浮或微數(shù),伴見發(fā)熱、無汗,頭痛或肢節(jié)酸痛等為特征的證候。 3.6.3.2 燥干清竅證 syndrome/pattern of dryness harassing the upper orifices 因氣候或環(huán)境干燥,津液耗損,清竅失濡所致。臨床以口鼻、咽喉干燥,兩眼干澀,少淚、少涕、少津、甚則衄血,舌質(zhì)瘦小、舌苔干而少津,脈細(xì)等為特征的證候。 |
5 | file_path: document/中醫(yī)臨床診療術(shù)語證候.txt 6.3.1 津傷化燥證 syndrome/pattern of fluid damage transforming into dryness 津傷燥熱證 因燥熱內(nèi)蘊(yùn),或內(nèi)熱化燥,傷津耗液所致。臨床以口干、舌燥,頻飲而不解其渴,食多、善饑,夜尿頻多,逐漸消瘦,舌質(zhì)紅,舌苔薄黃或少,脈弦細(xì)或滑數(shù),伴見皮膚干燥,四肢乏力,大便干結(jié)等為特征的證候。 4.6.3. |
可以看出,我們得到的query的輸出中的證候都是這幾個(gè)片段中的,大模型也確實(shí)根據(jù)我們檢索出的片段進(jìn)行了回復(fù)。
片段1和片段5的結(jié)尾存在多余的章節(jié)號(hào),這主要與我們使用的embedding模型和設(shè)置的chunk_size
有關(guān)。我們可以通過追蹤觀察這些被用于檢索增強(qiáng)生成的文檔片段來調(diào)整chunk_size
的值,以讓embedding模型切分出的片段更合理,提高RAG系統(tǒng)的表現(xiàn)。
如果想追蹤更多的檢索片段,可以提高similarity_top_k
的值。文章來源:http://www.zghlxwxcb.cn/news/detail-837688.html
如果想追蹤片段具體的相似度得分(Similarity Score)的值,可以將log中的level
設(shè)置為DEBUG級(jí)別。文章來源地址http://www.zghlxwxcb.cn/news/detail-837688.html
到了這里,關(guān)于RAG實(shí)戰(zhàn)3-如何追蹤哪些文檔片段被用于檢索增強(qiáng)生成的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!