久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

LangChain+通義千問搭建RAG知識庫問答系統(tǒng)

LangChain+通義千問搭建RAG知識庫問答系統(tǒng) 上周有個(gè)朋友問我公司里攢了幾百份產(chǎn)品文檔、報(bào)銷制度、設(shè)備操作手冊散落在各個(gè)文件夾里新同事想問點(diǎn)東西只能靠人肉搜索。他想做一個(gè)“文檔問答機(jī)器人”但一搜教程全是講微調(diào)大模型、租GPU訓(xùn)練的那種看起來就勸退。我直接給他推了另一條路LangChain 加通義千問做一套 RAG 知識庫問答系統(tǒng)半小時(shí)就能把鏈路跑通。這篇文章就是把當(dāng)時(shí)那套可運(yùn)行的代碼完整拆開講清楚末尾附了完整版復(fù)制下來換個(gè) API Key 就能用。這篇文章適合兩類人一是想給自己的資料庫做智能問答、但不想碰模型訓(xùn)練的開發(fā)者二是剛接觸 RAG、想找一個(gè)最小可運(yùn)行 Demo 來理解全流程的學(xué)習(xí)者。我不會只丟代碼給你我會把文檔加載、文本切分、向量化、檢索、Prompt 設(shè)計(jì)這些環(huán)節(jié)的“為什么”都講明白。看完你會發(fā)現(xiàn)RAG 這套東西原理上就是一層窗戶紙真正的坑全在細(xì)節(jié)里。1. RAG到底在解決什么問題1.1 大模型天生回答不了私有知識先想一個(gè)場景你直接問一個(gè)通用大模型“我們公司的請假審批流程是什么”它能答嗎大概率是答不了的。因?yàn)槟P驮谟?xùn)練時(shí)只見過公開的互聯(lián)網(wǎng)語料它根本沒見過你們公司的內(nèi)部制度。這時(shí)候它又不會主動說“我不知道”而是會根據(jù)自己理解過的類似內(nèi)容編造一套“看起來很像回事”的流程給你。這就是行業(yè)里常說的“幻覺”。這個(gè)問題不是換一個(gè)更大的模型就能解決的。你再大的模型它的知識截止時(shí)間也是固定的你們的文檔今天更新了它不可能今天就學(xué)會。私有知識、企業(yè)內(nèi)部資料、最新的產(chǎn)品變更說明這些東西天然不在模型的訓(xùn)練范圍里。所以大模型落地到具體業(yè)務(wù)場景時(shí)第一個(gè)要解決的問題不是“模型不夠聰明”而是“模型看不到該看的數(shù)據(jù)”。1.2 RAG的三段式流水線RAG 的全稱是 Retrieval-Augmented Generation檢索增強(qiáng)生成。這個(gè)名字很學(xué)術(shù)但背后邏輯特別樸素——與其強(qiáng)迫模型記住所有知識不如在它回答問題之前先把相關(guān)的資料找出來遞給它讓它“看著資料回答”。整個(gè)過程分三段第一段是索引構(gòu)建。把散落在 txt、docx、pdf 里的文檔全部讀取進(jìn)來切成一個(gè)個(gè)幾百字的文本塊再用 Embedding 模型把每個(gè)文本塊變成一組向量最后存進(jìn)向量數(shù)據(jù)庫。這一步是離線完成的跑一次就行。第二段是檢索。用戶輸入一個(gè)問題時(shí)系統(tǒng)先把問題用同一個(gè) Embedding 模型變成向量然后在向量庫里做相似度搜索找出和這個(gè)問題最相關(guān)的 3 到 5 個(gè)文本塊。這一步是實(shí)時(shí)的要求快。第三段是生成。把檢索到的文本塊和用戶問題拼成一個(gè) Prompt交給大模型讓它基于這些檢索到的資料作答。這一步很像開卷考試模型不用背全部內(nèi)容但它手邊有一份參考資料回答必須從資料里找依據(jù)。如果你想一句話記牢RAG 就是用“開卷考試”的方式替代“閉卷硬背”的傳統(tǒng)問答。普通 LLM 問答是閉卷RAG 是讓模型帶著參考資料進(jìn)考場。1.3 為什么我選擇RAG而不是微調(diào)很多第一次接觸知識庫問答的人會問為什么不微調(diào)模型微調(diào)確實(shí)可以把特定知識“訓(xùn)練進(jìn)”模型參數(shù)里但對大多數(shù)知識庫場景來說RAG 的性價(jià)比遠(yuǎn)高于微調(diào)。我拿常用的幾個(gè)維度做個(gè)對比對比項(xiàng)微調(diào)RAG數(shù)據(jù)準(zhǔn)備需要標(biāo)注好的“問題-答案”訓(xùn)練數(shù)據(jù)只需要原始文檔零標(biāo)注硬件成本需要 GPU 訓(xùn)練周期以天計(jì)普通 CPU 就能完成索引分鐘級知識更新文檔一變重新訓(xùn)練一版換文檔重跑一次索引即可可解釋性黑盒答案無法溯源能返回命中的原文片段對幻覺的抑制依然可能編造配合提示詞約束大幅降低編造你可以把微調(diào)和 RAG 的關(guān)系理解為“背教材”和“查教材”。如果你要的是學(xué)生開口就是專業(yè)術(shù)語、語氣完全貼合你的團(tuán)隊(duì)風(fēng)格那微調(diào)合適。但如果你本質(zhì)上是想解決“內(nèi)部資料太多了大家找不到答案”的問題那就不要去訓(xùn)練模型而是把檢索做到位。甚至很多成熟項(xiàng)目是先用 RAG 把知識檢索鏈路跑通后續(xù)再考慮用微調(diào)優(yōu)化生成風(fēng)格兩者并不是互斥的關(guān)系。2. 技術(shù)選型為什么是LangChain、通義千問、FAISS2.1 LangChain到底幫你省了什么沒有 LangChain 的時(shí)候做一個(gè) RAG 系統(tǒng)要自己處理的事情非常多寫代碼遍歷目錄加載文檔處理不同文件格式的解析邏輯自己實(shí)現(xiàn)文本切分算法對接向量數(shù)據(jù)庫的 API還要寫 Prompt 拼接和結(jié)果解析。每一步都不難但堆在一起就很煩。LangChain 的核心價(jià)值是流程編排和組件標(biāo)準(zhǔn)化。它把 RAG 拆成一個(gè)個(gè)標(biāo)準(zhǔn)組件文檔加載器負(fù)責(zé)讀取文件、文本分割器負(fù)責(zé)切分、Embedding 封裝負(fù)責(zé)調(diào)向量模型、向量存儲封裝負(fù)責(zé)讀寫向量庫、鏈Chain負(fù)責(zé)把檢索結(jié)果拼進(jìn) Prompt 再調(diào)大模型。你要做的事情從“寫全部代碼”變成了“選組件、配參數(shù)”。當(dāng)然LangChain 也是被吐槽最多的框架之一因?yàn)樗骂l繁、抽象層級多、版本之間破壞性改動不少。但即便如此我依然推薦在起步階段用它。原因很簡單RAG 的鏈路很固定你沒必要自己造每一塊輪子。LangChain 幫你把邊界和接口定義好了等以后你真要上生產(chǎn)再針對瓶頸替換具體實(shí)現(xiàn)也不遲。2.2 通義千問作為大模型接口大模型選型我選的是通義千問代碼里用的是 ChatTongyi 這個(gè)封裝。選它的理由主要有三個(gè)。第一中文效果好。知識庫問答場景里檢索到的資料和用戶的問題大部分是中文模型對中文語義的理解能力直接決定輸出質(zhì)量。通義千問的中文能力在實(shí)測中表現(xiàn)穩(wěn)定尤其是指令跟隨和長文本歸納這兩塊。第二接入成本低。LangChain 社區(qū)里已經(jīng)有現(xiàn)成的 ChatTongyi 類填一個(gè) API Key 和模型名就能用不需要自己寫 SDK 調(diào)用邏輯。如果你以后想換別的國產(chǎn)模型也可以看 LangChain 是否支持對應(yīng)的 Chat 類接口風(fēng)格基本一致。第三費(fèi)用可控。它有不同檔位的模型日常測試用輕量型號跑通了再升級到更強(qiáng)型號切換成本幾乎為零。對我這種經(jīng)常要寫 Demo 驗(yàn)證想法的人來說這個(gè)體驗(yàn)很重要。2.3 Embedding模型與向量庫的選擇RAG 里有兩個(gè)“向量”相關(guān)的東西容易被混為一談一個(gè)是把文本變成向量的 Embedding 模型一個(gè)是存向量的向量數(shù)據(jù)庫。兩者都影響效果但 Embedding 模型的影響更大——檢索找不到相關(guān)內(nèi)容后面生成再好也是巧婦難為無米之炊。Embedding 我這里用的是 text-embedding-v3通義千問配套的中文向量模型。中文場景下用專門優(yōu)化過中文語料的 Embedding 模型比直接用英文模型的效果好很多。這個(gè)差別在短文本檢索時(shí)特別明顯。向量庫我選的是 FAISS而不是直接上 Milvus 或 Elasticsearch。原因很實(shí)在FAISS 是一個(gè)本地計(jì)算庫pip install faiss-cpu就能用不需要單獨(dú)啟動服務(wù)不需要運(yùn)維特別適合個(gè)人項(xiàng)目和小規(guī)模知識庫。你的知識庫如果只是幾千個(gè)文本塊FAISS 的檢索性能綽綽有余。真到了百萬級數(shù)據(jù)量再遷移到專用向量數(shù)據(jù)庫LangChain 的接口層基本不用動這點(diǎn)也是框架帶來的好處。3. 環(huán)境準(zhǔn)備先把地基打好3.1 用虛擬環(huán)境隔離項(xiàng)目依賴開始寫代碼之前我強(qiáng)烈建議先建一個(gè)獨(dú)立的 Python 虛擬環(huán)境。LangChain 的依賴樹比一般庫要復(fù)雜它底層依賴 pydantic而 pydantic 對版本要求非常嚴(yán)格。如果你把 LangChain 直接裝進(jìn)全局環(huán)境大概率會跟其它項(xiàng)目里固定版本的 pydantic 起沖突到時(shí)候滿屏報(bào)錯查得頭疼。創(chuàng)建命令很簡單把這段拿過去用就行python -m venv rag_env # Windows 激活 rag_env\Scripts\activate # macOS / Linux 激活 source rag_env/bin/activatePython 版本建議用 3.10 或 3.11。3.8 太舊個(gè)別新版依賴已經(jīng)不再支持3.12 也能跑但有些包在 Windows 上可能沒有預(yù)編譯的 wheel裝起來麻煩。我自己的項(xiàng)目環(huán)境是 Python 3.11實(shí)測最穩(wěn)。3.2 核心依賴安裝清單這是一個(gè)最小可運(yùn)行方案不需要裝一大堆用不上的包。我在項(xiàng)目里實(shí)際安裝的依賴就這幾個(gè)pip install langchain langchain-community langchain-text-splitters pip install faiss-cpu pip install dashscope python-dotenv逐個(gè)說下它們是干嘛的。langchain主框架提供鏈、Prompt 模板這些核心能力。langchain-community第三方集成組件的家。我們后面要用的文檔加載器、FAISS 向量庫、ChatTongyi、DashScopeEmbeddings 都在這個(gè)包里。新版 LangChain 把社區(qū)集成從主包里拆出來了所以必須單獨(dú)裝。langchain-text-splitters文本切分工具。這個(gè)也被拆成了獨(dú)立包專門放 RecursiveCharacterTextSplitter。faiss-cpuFAISS 的 CPU 版本。個(gè)人和小型知識庫場景下CPU 版本和 GPU 版本在檢索速度上的差距你幾乎感知不到裝 CPU 版最省事。dashscope通義千問模型的官方 SDK。LangChain 的 ChatTongyi 內(nèi)部會調(diào)用它所以這也是隱性依賴。python-dotenv用來讀取 .env 文件里的環(huán)境變量方便管理 API Key。如果你的知識文檔里有 PDF再額外裝一個(gè)pip install pypdf。這是 PyPDFLoader 依賴的后端不裝的話加載 PDF 會直接報(bào)錯。3.3 API Key 配置的正確姿勢通義千問的模型服務(wù)是走 API 調(diào)用的你需要先去模型服務(wù)控制臺開通服務(wù)然后創(chuàng)建一個(gè) API Key。過程不復(fù)雜重點(diǎn)是拿到 Key 之后怎么管理。不要在代碼里硬編碼 API Key。很多人圖快直接把 Key 寫在 main.py 里然后整個(gè)文件夾傳到 Git 倉庫Key 就泄露了。正確做法是在項(xiàng)目根目錄建一個(gè) .env 文件DASHSCOPE_API_KEY你的key代碼里通過load_dotenv()自動讀取然后os.getenv(DASHSCOPE_API_KEY)拿到值。.env 文件記得加進(jìn) .gitignore永遠(yuǎn)不要提交到遠(yuǎn)程倉庫。代碼里還有一個(gè)健壯性細(xì)節(jié)如果 API Key 為空直接拋異??焖偈《皇亲尦绦蚺艿揭话氩乓?yàn)檎J(rèn)證失敗報(bào)錯。這個(gè)小習(xí)慣能省很多調(diào)試時(shí)間。4. 核心代碼拆解一條鏈看懂 RAG 全流程4.1 文檔加載把磁盤上的文件變成 DocumentRAG 的第一步是把文檔讀進(jìn)來。我用的加載器是 DirectoryLoader 加 TextLoader 的組合loader DirectoryLoader( ./knowledge, glob**/*.txt, loader_clsTextLoader, loader_kwargs{encoding: utf-8}, ) documents loader.load()DirectoryLoader 負(fù)責(zé)遍歷一個(gè)目錄glob**/*.txt表示匹配目錄下所有子文件夾里的 txt 文件。loader_clsTextLoader指定具體用 TextLoader 去解析文件內(nèi)容。load() 返回的是一個(gè) Document 對象列表。每個(gè) Document 有兩個(gè)核心字段page_content是正文文本metadata是文件信息比如文件路徑。這個(gè) metadata 后面會當(dāng)答案來源展示用非常關(guān)鍵。單獨(dú)說明一下編碼問題。TextLoader 默認(rèn)按 utf-8 讀取文件但很多人電腦上的 txt 是 GBK 編碼結(jié)果一運(yùn)行就拋 UnicodeDecodeError。所以我這里用 loader_kwargs 顯式傳了encodingutf-8。如果你手上的文檔是 GBK就把值改成gbk。最省心的做法是統(tǒng)一把知識庫文檔轉(zhuǎn)成 utf-8之后就沒這個(gè)煩惱了。4.2 文本切分控制每個(gè)片段的信息量文檔加載進(jìn)來后不能直接向量化因?yàn)檎臋n太長了。一篇 3000 字的說明書如果整體變成一個(gè)向量向量里各個(gè)主題的信息會互相干擾檢索時(shí)相關(guān)性會被稀釋。所以要先切塊。text_splitter RecursiveCharacterTextSplitter( chunk_size500, chunk_overlap50, ) docs text_splitter.split_documents(documents)這里有兩個(gè)參數(shù)需要重點(diǎn)理解chunk_size 和 chunk_overlap。chunk_size500 表示每個(gè)文本塊大約 500 個(gè)字符。為什么選 500因?yàn)橹形膱鼍跋乱粋€(gè)漢字差不多對應(yīng)一個(gè) token500 個(gè)字符就是大概 500 個(gè) token 的文本既能承載一個(gè)相對完整的知識點(diǎn)又不會占用太多大模型上下文窗口。如果設(shè)成 2000一個(gè)塊里塞了好幾個(gè)主題檢索出來的相關(guān)性就不精確如果設(shè)成 100每段內(nèi)容太短模型拿不到完整上下文回答容易斷章取義。chunk_overlap50 表示相鄰兩個(gè)塊之間保留 50 個(gè)字符的重疊。這 50 個(gè)字符是為了防止切分邊界恰好把一段完整的話攔腰截?cái)?。比如上一塊結(jié)尾在講某個(gè)概念的定義下一塊開頭也是這個(gè)概念重疊可以讓兩塊各自都保留完整信息。RecursiveCharacterTextSplitter 的切分邏輯不是簡單地按長度硬切而是優(yōu)先按換行符、句號、空格這樣的天然邊界遞歸切分。切出來都是相對完整的句子比無腦按字符切要智能一點(diǎn)。4.3 向量化與入庫構(gòu)建一次反復(fù)使用文本切好后下一步就是向量化并存入向量庫。這一步在我的代碼里是兩行embeddings DashScopeEmbeddings(modeltext-embedding-v3) vectorstore FAISS.from_documents(docs, embeddings) vectorstore.save_local(./faiss_index)第一行創(chuàng)建 Embedding 模型實(shí)例。第二行對每個(gè)文本塊調(diào)用模型接口生成向量并寫入 FAISS 索引。第三行把索引持久化到本地磁盤。FAISS.from_documents 是同步流程文檔多的時(shí)候這里會明顯卡幾十秒是正常的它在挨個(gè)調(diào)用 Embedding API。有一個(gè)經(jīng)驗(yàn)值得記下來如果只是改動 Prompt 模板不需要重建索引如果你改了切分策略、換了 Embedding 模型或者新增了大量文檔就建議重新 build 一次索引。因?yàn)樗饕锎娴氖俏谋緣K的向量Prompt 改了不影響向量內(nèi)容。4.4 檢索器與Prompt設(shè)計(jì)決定回答質(zhì)量的兩只手索引構(gòu)建好之后要把它包裝成檢索器retriever vectorstore.as_retriever( search_typesimilarity, search_kwargs{k: 4}, )search_typesimilarity表示用向量余弦相似度找最相關(guān)的文本塊。k4表示取最相關(guān)的 4 塊。這個(gè)數(shù)字不是拍腦袋定的太小了可能漏掉關(guān)鍵信息太大了又可能把一堆不太相關(guān)的內(nèi)容也塞進(jìn)上下文反而干擾模型。4 這個(gè)值在大多數(shù)場景下是個(gè)不錯的起點(diǎn)你可以在測試時(shí)調(diào)到 3 或 5 對比效果。Prompt 模板是整個(gè)系統(tǒng)里最直接的“指揮棒”我用的模板是prompt_template 請基于以下給定的資料用簡潔、專業(yè)、準(zhǔn)確的中文回答用戶的問題。 如果給定的資料中沒有相關(guān)內(nèi)容請直接回答根據(jù)現(xiàn)有知識無法回答該問題。禁止編造或臆測。 給定資料 {context} 用戶問題 {question} 你的回答這個(gè)模板的重點(diǎn)在于“禁止編造”四個(gè)字。RAG 系統(tǒng)的幻覺問題不只在檢索環(huán)節(jié)如果 Prompt 沒有明確約束模型會把檢索到的資料和自己記憶里的舊知識混在一起作答。給它設(shè)置一個(gè)“不知道就直說”的兜底是抑制幻覺最簡單有效的一招。模板里的{context}和{question}是占位符組裝時(shí)會分別替換成檢索到的文本塊和用戶問題。4.5 組裝問答鏈并調(diào)用組裝用的是 RetrievalQA 這個(gè)便捷鏈qa_chain RetrievalQA.from_chain_type( llmllm, chain_typestuff, retrieverretriever, return_source_documentsTrue, chain_type_kwargs{prompt: QA_CHAIN_PROMPT}, ) result qa_chain.invoke({query: 報(bào)銷流程是什么})chain_typestuff表示把檢索到的所有文本塊直接拼接后塞進(jìn) Prompt。這是最簡單也最推薦的方式因?yàn)樗讶亩冀o了模型信息損失最小。只有當(dāng)你檢索結(jié)果特別多、超過模型上下文限制時(shí)才需要考慮 map_reduce 或 refine 這樣的復(fù)雜策略。調(diào)用時(shí)輸入的是一個(gè)字典key 是query。這也是 RetrievalQA 隱式的約定很多人第一次用會慣性寫成question結(jié)果跑起來直接報(bào)錯。輸出 result 是一個(gè)字典result[result]是模型生成的最終回答result[source_documents]是命中的文本塊列表遍歷它就能拿到每個(gè)塊的原文和文件路徑。調(diào)試時(shí)這個(gè)字段特別重要它能幫你看到模型到底依據(jù)了哪些資料。5. 實(shí)測中的高頻坑與排查思路5.1 中文編碼引發(fā) UnicodeDecodeError這是最常見的啟動報(bào)錯。TextLoader 默認(rèn)用 utf-8 讀文件但你的 txt 可能是 GBK 編碼一加載就拋 UnicodeDecodeError。我的處理方式是在 DirectoryLoader 里顯式傳loader_kwargs{encoding: utf-8}然后把知識庫原始文檔統(tǒng)一用記事本或腳本轉(zhuǎn)成 UTF-8。手動改文件編碼太累了可以在代碼里加個(gè)預(yù)處理或者干脆要求團(tuán)隊(duì)上傳文檔時(shí)統(tǒng)一格式。如果你堅(jiān)持讀 GBK就把 encoding 改成gbk。5.2 FAISS加載報(bào)錯allow_dangerous_deserialization新版本 LangChain 在加載本地 FAISS 索引時(shí)強(qiáng)制要求你顯式聲明允許反序列化否則會報(bào)一堆安全提示。這是 because FAISS 的本地索引是用 pickle 序列化的反序列化惡意文件可能有安全風(fēng)險(xiǎn)。解決辦法很簡單加載時(shí)加上參數(shù)vectorstore FAISS.load_local( ./faiss_index, embeddings, allow_dangerous_deserializationTrue, )這個(gè)參數(shù)看著嚇人但只要你加載的是自己生成的索引文件在本地可信環(huán)境里跑沒有實(shí)際問題。5.3 模型調(diào)用失敗限流、超時(shí)與Key配置如果你在循環(huán)測試時(shí)連續(xù)提問可能會碰到服務(wù)端返回限流錯誤或超時(shí)。第一反應(yīng)先檢查幾個(gè)點(diǎn)API Key 是否配置在環(huán)境變量里DASHSCOPE_API_KEY 是否真的讀到了模型名是否拼寫正確網(wǎng)絡(luò)環(huán)境是否穩(wěn)定。排查完了如果還報(bào)限流最簡單的方案是把代碼里的模型從效果更強(qiáng)的型號換成輕量型號。日常功能調(diào)試階段完全夠用等確認(rèn)鏈路沒問題了再換大模型。另外可以在循環(huán)里加一個(gè) sleep避免一股腦發(fā)請求。5.4 回答不對檢索內(nèi)容驢頭不對馬嘴遇到最多的是這個(gè)問題代碼跑通了回答也生成了但內(nèi)容完全不在點(diǎn)上。第一步先看 source_documents。把命中的幾個(gè)文本塊打印出來看看模型依據(jù)的資料是不是真的和問題相關(guān)。如果檢索出來的就不相關(guān)那是索引或檢索參數(shù)的問題調(diào)整 chunk_size、換 Embedding 模型、增加 k 值。如果檢索出來是相關(guān)的但回答還是不對那就是 Prompt 的問題檢查模板里有沒有明確告訴模型“只能依據(jù)給定資料作答”。還有一個(gè)容易被忽略的細(xì)節(jié)測試時(shí)用文檔里的原話問先確認(rèn)鏈路是通的再改成同義表達(dá)驗(yàn)證檢索器的泛化能力。很多人一上來就用自己的大白話提問檢索不到內(nèi)容就以為是系統(tǒng)壞了其實(shí)在文檔里原話是有明確答案的。5.5 LangChain版本變動導(dǎo)致的import報(bào)錯版本兼容問題我之前被惡心過。LangChain 從 0.1 到 0.3 經(jīng)歷了好幾次大重構(gòu)很多組件改了導(dǎo)入路徑。網(wǎng)上大量教程還是舊版寫法直接復(fù)制就會 ModuleNotFoundError。新版的核心路徑寫在下面RecursiveCharacterTextSplitter 從langchain_text_splitters導(dǎo)入DirectoryLoader、TextLoader、ChatTongyi、DashScopeEmbeddings、FAISS 從langchain_community子模塊導(dǎo)入RetrievalQA、PromptTemplate 從langchain導(dǎo)入解決版本問題有一個(gè)笨辦法但很有效遇到 ModuleNotFoundError優(yōu)先檢查 import 路徑是否符合上面這些新路徑而不是急著去 pip 重裝。同時(shí)建議在項(xiàng)目 requirements.txt 里把 langchain 版本范圍寫死比如langchain0.3,0.4避免哪天長版本大版本升級后舊代碼突然跑不了。6. 可直接運(yùn)行的完整代碼文章末尾6.1 項(xiàng)目目錄結(jié)構(gòu)先把目錄結(jié)構(gòu)擺出來照著建就行rag_demo/ ├── .env # 存放 DASHSCOPE_API_KEY ├── knowledge/ # 把你想讓模型學(xué)習(xí)的文檔放這里 │ └── product_manual.txt └── main.py # 本文完整代碼首次運(yùn)行 main.py 會自動在項(xiàng)目根目錄創(chuàng)建 faiss_index 文件夾用來存放向量索引。第二次再運(yùn)行如果檢測到索引已存在就不會重新構(gòu)建直接加載本地索引。6.2 main.py 完整代碼下面這段代碼就是完整可運(yùn)行的版本。你只需要做三件事把 .env 文件里的 Key 換成自己的往 knowledge 目錄里放幾個(gè) txt 文檔然后執(zhí)行python main.py。import os from dotenv import load_dotenv load_dotenv() from langchain_community.document_loaders import DirectoryLoader, TextLoader from langchain_community.embeddings import DashScopeEmbeddings from langchain_community.vectorstores import FAISS from langchain_community.chat_models import ChatTongyi from langchain_text_splitters import RecursiveCharacterTextSplitter from langchain.chains import RetrievalQA from langchain.prompts import PromptTemplate DASHSCOPE_API_KEY os.getenv(DASHSCOPE_API_KEY) if not DASHSCOPE_API_KEY: raise ValueError(請先在 .env 文件中配置 DASHSCOPE_API_KEY) KNOWLEDGE_DIR ./knowledge VECTOR_INDEX_DIR ./faiss_index def build_index(): 讀取知識庫文檔切分向量化保存FAISS索引。 loader DirectoryLoader( KNOWLEDGE_DIR, glob**/*.txt, loader_clsTextLoader, loader_kwargs{encoding: utf-8}, ) documents loader.load() if not documents: raise ValueError(知識庫目錄下沒有找到任何 txt 文檔請先往 knowledge 目錄放文件。) text_splitter RecursiveCharacterTextSplitter( chunk_size500, chunk_overlap50, ) docs text_splitter.split_documents(documents) embeddings DashScopeEmbeddings(modeltext-embedding-v3) vectorstore FAISS.from_documents(docs, embeddings) vectorstore.save_local(VECTOR_INDEX_DIR) print(f索引構(gòu)建完成共切分 {len(docs)} 個(gè)文本塊已保存到 {VECTOR_INDEX_DIR}) def load_index(): 加載本地FAISS索引。 embeddings DashScopeEmbeddings(modeltext-embedding-v3) vectorstore FAISS.load_local( VECTOR_INDEX_DIR, embeddings, allow_dangerous_deserializationTrue, ) return vectorstore def create_qa_chain(): 構(gòu)建檢索問答鏈。 if not os.path.exists(VECTOR_INDEX_DIR): build_index() vectorstore load_index() retriever vectorstore.as_retriever( search_typesimilarity, search_kwargs{k: 4}, ) llm ChatTongyi( modelqwen-plus, temperature0.1, ) prompt_template 請基于以下給定的資料用簡潔、專業(yè)、準(zhǔn)確的中文回答用戶的問題。 如果給定的資料中沒有相關(guān)內(nèi)容請直接回答根據(jù)現(xiàn)有知識無法回答該問題。禁止編造或臆測。 給定資料 {context} 用戶問題 {question} 你的回答 QA_CHAIN_PROMPT PromptTemplate( templateprompt_template, input_variables[context, question], ) qa_chain RetrievalQA.from_chain_type( llmllm, chain_typestuff, retrieverretriever, return_source_documentsTrue, chain_type_kwargs{prompt: QA_CHAIN_PROMPT}, ) return qa_chain def main(): qa_chain create_qa_chain() while True: question input(\n請輸入問題輸入 exit 或 quit 退出).strip() if question.lower() in (exit, quit): break if not question: continue result qa_chain.invoke({query: question}) print(\n回答) print(result[result]) print(\n參考來源) for i, doc in enumerate(result[source_documents], 1): source doc.metadata.get(source, 未知來源) content doc.page_content[:120].replace(\n, ) print(f{i}. {source} | {content}) print(已退出。) if __name__ __main__: main()6.3 運(yùn)行驗(yàn)證與后續(xù)優(yōu)化按順序執(zhí)行在項(xiàng)目根目錄創(chuàng)建 .env 文件寫入DASHSCOPE_API_KEY你的key。在 knowledge 目錄下放幾個(gè) txt 文檔比如產(chǎn)品說明、FAQ、操作手冊。運(yùn)行python main.py。在交互提示符后輸入問題比如“備份策略是什么”回車就能看到回答和來源。輸入 exit 退出程序。第一次運(yùn)行會先構(gòu)建索引等你第二次輸入問題時(shí)檢索和回答就已經(jīng)是實(shí)時(shí)完成的。我實(shí)際測試下來從索引構(gòu)建到拿到第一個(gè)回答整個(gè)過程通常不超過一分鐘而且大部分時(shí)間是花在文檔切分和向量化上。這個(gè)版本跑通之后還有幾個(gè)后續(xù)值得做的方向如果想支持多輪對話可以在鏈路里加一個(gè)記憶模塊把歷史對話一并傳給模型如果知識庫文檔經(jīng)常更新可以在現(xiàn)有索引上調(diào)用 add_documents 增量添加而不是每次全量重建如果想擺脫在線 API 的成本也可以把 ChatTongyi 換成本地部署的開源模型LangChain 的接口層基本不用動。這套代碼我實(shí)際跑過很多輪第一次跑通時(shí)最大的感受是RAG 真的沒有想象中復(fù)雜真正的復(fù)雜度全藏在細(xì)節(jié)里——切分多大、命中幾個(gè)塊、Prompt 怎么寫、Key 怎么配。你把這篇文章的代碼復(fù)制下來換成自己的文檔跑一圈很多“教程里為什么這么寫”的問題就自然懂了。以后要做生產(chǎn)級系統(tǒng)再把權(quán)限、日志、效果評估這些補(bǔ)上但第一步永遠(yuǎn)是把鏈路跑通。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
91丨九色丨国产打屁股| 亚洲性爱高潮影院| 国产嫩草精品A88AV在线| 九九热只有精品| 操逼逼中文字幕| 日产国产精品中文久久婷婷| 欧美熟妇精品黑人巨大91| 国产久久av| 日韩熟女精品无码专区一区二区| 中文字幕三四五区| 97大色网| 伦伦成年午夜免费视频| 夫妻AV网站| 国人欧美精品一区二区| 日日骚网站| 色综合色综合网| 欧美色图在线视频少妇| 国产伦乱91| 91网站18+| 日本欧美亚洲高清在线看| 人人爽人人精品乱人伦AV| 国产精品美女在线一区| 欧美日韩小说| 亚洲一二三四区机械| 国产亚洲色停停久久99精品91| 天天干天天干天天干| 情色大香蕉| www.色婷婷| 男人的天堂视频精品乱在线| 啊啊啊操一区| 欧美日韩插逼视频| 日本九九久久99| 蜜乳AV一区| 99re在线精品78| 日韩欧美aⅴ综合网站发布| 最新精品久久蜜桃 | 中文字幕美女91| 韩国三级三级BD在线| 欧美人人曰人人操人人射射| 清纯唯美综合亚洲| 大香蕉碰碰| 国产高清视频无码在线| 中国的操老妇女| 国产超碰人人操| 亚洲国产精品无石码久久| 艹我哪美一区无码| 99久国产精品午夜性色福利| 超碰97极品9| 日韩三级一区| 夜夜操美女| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 国产乱码精品一区二区三区四川| 97精品人妻一二三四| www.99热| 国产亚洲精品无码三区| 无码精品啪啪啪一区二区三区三州| 色色色色网站| 国产一区二区三区免费视频在性观看| 风月影院男女十八禁| www.色婷婷色综合| 1769国内精品视频| 国产夫妻性生活视频| 日韩免费人妻色情网站| 丁香六月综合激情| 日韩精品一区二区高清| 人妖欧美一区二区| 91欧美长吊| 久久鲁干| 国产操逼网站亚洲一级黄色| 欧美中字不卡| 国产性感骚丝袜在线| 免费作爱一级视频| 999精品国产高清一区二区| 99精品久久久久久| 精品国产自在在线99| 温婉少妇玩3p| 麻豆视频国产一区二区| 国产91美女视频| 久久中文色图| 91狠狠色丁香婷婷综合久久| 福利在线观看一区二区| 久久黄色视频一区二区三区| 九九九九九精品视频| 好看的91视频| 久久人妻视频| 性色av婷婷久久一区二区点复制| 草草电影院| 亚洲狠狠入| 91日日| 中文字幕av乱伦| 黄色人人| 凹凸视频在线一区二区| 啊啊啊啊嗯嗯在线久久久| 久偷拍| 免费看毛片操穴| 亚洲图片欧洲图片aⅴ| 中文操逼字幕| 欧美在线天堂| 欧美第五页| 亚洲精品欧洲精品| 91人妻视频| 伊色综合天堂色97| 开心五月激情网| 最新三级网址| 操人人| 青青草久草| www欧美91| 精品综合久久久久久97| 亚洲欧美综合网站| 热久久无毒不卡| 操逼精品视频| 色哟哟-国产专区| 九九在线精品| 久久老子无码午夜伦不卡| 黄色区免费观看中文字幕| 内射夫妻三片| 日本精品网站在线中文| 国产强奸乱伦xd| 九九九久久久| 男人午夜天堂| 密乳视频在线| av网站在线看| 超碰色综合| 亚洲天堂加勒比| 亚洲激情在线| 日韩无码极品| 精品人妻一区二区三区日产乱码| www国产无码| 伊人国产成人av网站| 久操免费观看| 探花视频免费观看国产专区| A 天堂| 久久精品国产亚洲妲己影视| 强奸乱伦AV网站| 九九干| 亚洲暴力强奸AV| 最新的亚洲无吗| 欧美国产伊人久久久久| 91在线无码精品秘 软件| 黄aaaaaaaaaaaaaaaaaa色网站| 另类 日韩 熟女| 久久久久久久亚洲Av无码| 精品无码久久久久久国产浪潮| 夜夜草天天| 操操吧亚洲乱伦视频| 欧美日韩国产黄色片| 色欲蜜臀AV| 99re在线观看| 宅男91视频在线播放| 男人天堂.AB| 九九九久久久久| 91视频综合在线| 人妻熟女一区二区在线视频| 日本韩高清无砖码22o| 成人av在线播放| 日本人人操人人操| 性色国产东北露脸精品视频| 久久妇| 2017,超碰| 96久久久| 亚洲天堂7777| 日本 成 人 小说 电影 一区二区| 人人爽天天爽| 69久久久久久久久久久久久| 欧美劲爆第一页| 日韩成人无码| 五月丁香社区婷婷日韩欧美精品影院 | 五月色网| 91成人在线| 综合91网| 亚洲图片91| 強姦亂倫a| 免费观看的黄色的网站| 亚洲 综合 欧美| 中亚黄色三级大片| 欧美一二三| 国产精品视频麻豆入口| 婷婷五月色| 亚洲视频一二区| 999热日韩精品| 小说区 图片区色 综合区| 成人免费不卡在线视频| 精品久久99| 亚洲影视高清第一页| 亚洲综合999| 欧美十八禁导航成人| 在线只有精品| 亚州国产成人精品女人久久| 人妻二区| 六月丁香啪啪啪| 另类专区加勒比| 综合久久97| 黄色网址在线免费观看| 亚洲天堂日本| 国产在线能看的你懂的| 久久国产视频性吧 | 夜夜草我| 中文字幕五区| 青青草导航在线视频| 自拍偷拍 日韩欧美| 亚洲女毛多水多21P| 啊啊啊不要啊啊受不了了视频在线| 天堂亚洲欧美| 少妇滛荡视频| 2020中文字幕在线| 国产午夜无码片在线观看影视| 天天摸天天插天天日| 91老妇女| 国产超碰人人爽人人做| 少妇色综合| 国产无马在线| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 国产主播福利| 日韩乱码Av| 亚洲女优有码无码高清| 黄片www.| 91模特在线观看| 草草影院最新网址| 亚洲欧洲色情高清| 久久久国产av美女私房| 精彩国产视频播放1区2区| 久久春色| 3571色综合一区二区二区| 麻豆色99999| 少妇3P性爱自拍| 1区2区3区中文字幕日韩| 国产精品又黄又猛又粗| 欧美日韩精品久久| 啪一啪免费视频| 丝袜av一区二区三区| 青娱乐福利99| 日韩97精| 欧美劲爆视频一区二区| 五月天亚洲网| 欧美十八禁在线看| 精品一区二区三区18| 婷婷五月天影院| 久久久免费高清中文视频| 乱伦图一区| 久久久成人免费av电影| 无码抄逼网| 国产熟码AV| 亚洲欧美精品福利在线| 久久久日本电影| 亚洲91极品| 成人av在线播放| 色综合20p| 国产操逼逼网| 免费视频观看60秒| 操我啊啊啊啊啊| 亚洲国产精品成人综合| 天综合网欧美| 另类视频在线| 激情小说亚洲色图| 亚洲成人妻日韩在线| av在线一区二区三区| 亚洲s色图| 97色色色| 自拍偷拍国产欧美日韩韩| 国精综合一二三区影视| 男男H黄动漫啪啪无遮挡网站| 久久是精品| www.超碰| 无码区蜜乳| 亚洲宗合网| 97久久超碰| 精品九九| 蜜臀无码一区二区| 99热免费| 國產尤物AV尤物在線觀看| 久久黄黄黄| 国产精品久久久视频| 一级日本牲交大片好爽在线看| 精国久久一区二区三区98| 亚洲国产欧美中文永久| 91AV入口| 97鸡把在线视频| 91黑丝少妇| 伊人久久综合精品欧美| 97天天综合| 狠狠2050在线观看| 天天干少妇| 一区二区三区在线美女| 97色操| 日本999精品| 久99| 乱伦Av网| 青春草莓视频在线观看网址| 99热这里只有精品1| 超AV色女| 男人的天堂啪啪啪啪啪蜜桃不卡| 能在线播放的国产三级| 免费岛国一级片| 久久熟女精品不卡一区| 青娱乐蜜桃臀AV色婷| 国产精品国产拍高清AV| AV在线性爱| 人妻精品一区二区| 成人精品水蜜桃久久久久久久| 精品久久在线区一区| 极品白嫩美女白浆成人福利在线看| 久久专区| 96精品久久久久久久久| 91男人综合| 啊啊啊不要啊啊受不了了视频在线| 日本色婷婷| 少妇高潮对白在线观看| 免费久久一级毛片大黄| 日韩性爱小视频| 人妻激情视频| 夜夜爽夜夜摸夜夜操免费视频| 91色综合激情| 大香蕉碰| 一区二区你上我| A片 AV一级在线播放观看免费| 国产又黄又粗又猛大片| 97免费视频在线| 欧洲站一级二级三级h| 高潮嗯啊性感美女久久久| 国产91美女高潮| 中文字幕在线高清男人的天堂 | 黄色AAAAAAAAAAA大片| 国产免费黄色一级大片| 一本色道综合久久欧美| 婷婷激情四射| 污污汅18禁网站在线永久免费观看| 国产精品一区二区黄片| 亚洲熟妇AV日韩熟妇在线| 日韩AV噜噜噜一区二区三区四区| 六月婷婷色综合| 亚洲av噜噜噜噜噜噜| 东北女人| 开心五月婷婷| 五月婷婷六月丁香网址| 欧美性高潮在线| 中文字幕视频在线观看一区二区| 欧美人妻精品一区二区| 91精品国产综合久久久蜜臀酒店| 经典丝袜一区| A V少妇特黄三级| 无码国产Av| 人妻人久久精品中文字幕| 夜夜操二区| 亚洲精品一二区| 亚洲高清综合网| 四虎国产成人精品免费一女五男| 色人久久| 日韩欧美中文| 亚洲国产一级黄色视频| 老鸭窝成人| 91网站18在线| 日韩乱码Av| 久久久无码av精| 永久免费观看的毛片的网站| 欧美同性恋 的搜索结果 - 91n| 天天透伊人| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 99热这里只有精品8| 成人26uuu| 78操B| 91久久国产综合精品| av天堂影视中文在字幕在线中文 | 99抽插| 97中文天堂| 亚洲激情在线一区二区| 日本熟女免费視颖| 6080YYY午夜理论片在线观看| 青草成人免费视频一COm| 男人的天堂kva| 亚洲欧美啪啪| 国产日产欧产美韩系列麻豆免费| 亚洲综合一| 综合网久久| 婷婷香蕉欧美在线一区二区三区| 91久久久久久久| 爱av免费| 日韩精品1区2区中文字幕| 亚洲欧美一区二区网址| 亚洲不卡三级手机播放| 精品久| 国产97免费视频| 怡红院成人视频| 97这里有精品| 亚洲天堂欧美| 在线无码视频| 亚洲国产精品无码AV在线| 密乳AV免费观看| 成人a大片在线观看| 久久无码一区二区二三区性色| 网友自拍第一页| 国产精品视频内谢女人| 国产隔壁老王影院在线| 欧美日日操| 超碰在线香蕉| 综合色色婷婷| 日韩乱码Av| 亚洲成人一二三区| 精人妻无码一区二区三区伊人直播 | 99热在线只有精品| 日夜伊人网| 绯色一区二区三区不卡少妇| 国产精品成人久久一区二区三区| 探花熟女,姿勢到位,體驗感也到位| 男人高清无码一区二区| 综合色图亚洲欧美| 操香逼| 成人片视频| 欧美97se| 欧美偷拍区| 在线中文字幕极品av| 国产无马av| 青青欧美在线| 久久精品中文| 这里只有精品97| 婷婷久久五月综合激情| av日韩国产一区二区| a在线视频免费观看| 国产精品一区二区三区在线密挑| 嫩草伊人久久精品| 久久婷婷一区| 影音先锋日本一区二区| hd成人一区二区在线| 99热这里都是精品| 欧美日韩天堂| 欧美夜夜| 黄色片大香蕉| 在线视频一区二区传媒| 欲色综合| 国产欧美成人第一页在线观看| 免费一级毛片在线视频观看| 欧美夜色| 一起草三级AV电影在线观看| 欧美日韩国内不卡| 美国久久一二三四| 囯产精品久久久久久久久久二区三区| 国产传媒操逼视频| 吉川爱美98堂在线| 欧美 亚洲 在线| 日韩乱中文| 精品大久久| 青青草一本道福利视频| 久操凹凸视频| 狠插 制服 自拍| 九九热av| www超碰| 亚洲天堂日本| 国产精品人人爽人人做可爱福利| 九九成人| 蜜臀网 一区| 尤物一级在线免费观看| 男人精品天堂一区| 9国产超碰| 成人婷婷丁香| 国产白丝AV| 亚洲成人性爱在线观看| 国产久久日| 黄片qw| 精品人妻二区三区| 校园春色 欧美| 激情五月天色色网| 天天射天天色成人| 久久色情| 97亚洲色图| 黄色片大香蕉| 精彩久久中文| 国产乱码精品一区二区三区四川| 大香蕉色欲AV| 免费在线观看国内色片网站网址| 色老久久| 亚洲成?V人片在线观看福利| 91狠狠狠| 亚洲av在线免费观看| 91精品人妻一区二区三区蜜桃| 欧美日韩国产色图在线| 中文字幕精品三级久久久| 久干9操| 91美女国产在线| 国产 日韩 另类 视频一区爱| 加勒比五月天| 亚洲日韩国产欧美综合v| 天天干1区2区在线| 日本色色色| 亚洲毛片基地专区| 西西美女视频网| 国产精品久久99日日| 在线情色电影 91大 | 粉嫩小泬久久久一区二区| 韩三级a视频在线观看| 欧美性爱一区| 18禁超污无遮挡无码免费网| 狠狠色五月亚洲91| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 欧美亚洲尤物久久| 蜜臀va69| 日韩国产品视频中文字| 国内精品a| 久久综合久色欧美综合狠狠 | 99ri在线视频| 中文字幕欧美日韩三级| 欧美伦乱爱| 国产麻豆一级精品视频| 97色在线视频| 色香在线| 吻戏激情性巴克| 免费久久一级毛片大黄| 蜜臀中文无码午夜| 九九九久久久久| 女同性恋久久| 在线观看亚洲成人精品| 亚洲伊人青青草| 九九热免费国产视频婷婷伊人五月| 国产第12页| 日韩久射综合| 国产精品在线网站| 男人的天堂2019AV| 永久免费发布性爱网| 日韩九九九| 天美传媒Av在线| 丁香六月激情综合| 国产成人欧美一区二区三区的国产| 日韩成人小视频| 久久精品老司| 800zy一区二区| 91人人臊| 亚洲 日韩 丝袜 熟女 变态| 日韩熟女三十乱伦| 97鸡把在线视频| 欧美综合网1| 久草综合京东| av大香蕉| 国产精品久久伊人| 二男一女成人A片| 久久夜夜| 加勒比中文av| 蜜臀久久99精品久久久久电影| 99国产精品免费| 96AV精品| 日韩三级一区 | 天天操女人| 色色亚洲| 成人av免费观看| 天天天天天天天天天天干美女| av一区二区三区不卡| 91亚洲欧洲| 超碰久超碰久| 大香蕉99re| 色偷偷综合91久久噜噜| 亚洲天天精品| 91AV国产精品| 91久久国产精品| 97在线日韩中文字幕| 99热18这里只有精品| 欧美页片| 91美女视频在线免费观看| 97精品久久久久久久| 夜夜高潮夜夜爽高清视频一 | 搡老女人老91二区| 好爽视频在线观看视频| 香蕉99秘 一区精品蜜桃臀| 蜜桃传媒视频第一区入口在线看| 亚洲天堂少妇| 97视频播放| 啊v在线观看视频| 天天肏天天干| 思思热在线视频免费| 国产无码三级视频在线观看| 国产操逼视频在线观看| 人人妻人射| 国产亚洲精品第一最新| 国产又色又爽又舒服的三级视频| 欧美十八禁在线看| 一区二区 韩日AV| 狼天天狼天天大香蕉| 亚洲国产综合久久久性感熟妇| 日本不卡高清免v欧美日韩在线观看| 无码一区二区三区四区五区六区七区八区九区十区视频 | 澳门成人网站久国产日韩| 91逼逼女人91| 精品无码久久久久| 超碰色大香蕉| 亚洲成a人v欧美综合天堂下载| 国产婷婷综合在线观看| 天天色,天天干,天天干| av片在线观看免费播放| 殴美牲| 欧美色日本| 欧美人妻一区二区| 蜜臀99久久精品久久久久| 久草精品国产99| 欧美日韩精品一区二区三区高清| 五月天激情四射| 亚洲最大的黄色电影网站。| 亚洲日韩乱码中文无码蜜桃臀网站| 亚洲美腿丝袜香蕉影视欧美成人| 日韩97P| 久久成人午夜精品影院| 亚洲人妻一区二区三区| 一区,二区,三区视频| 黑人性暴力毛片| 99久久久久久亚洲精品不卡| 性爱av网站| 亚州精品丝袜-不卡成人免费| 蜜桃精品视频一区二区三区| 久久狠狠色噜噜狠狠狠狠97| 在线人人人人人人精品超| 91色碰| 92大香蕉| 日韩在线性爱免费视频| 97精品一二区| 欧美性少妇| 亚洲密乳AV| 精品丰满人妻一区二区三区免费观| 在线视频五十市| 啊啊啊久久| 亚洲乱码尤物193YW| 人妻在线臀日韩| 午夜经典| 人人摸人人干人人拍97| 亚洲淫色网中文| 日本不卡一区二区| 丁香五月大香蕉| 亚洲人综合| 免费精品人妻一区二区三| 丰满少妇一区二区三区专区| 国产丝袜啪啪| 在线性黄高清免费视频| 欧美 亚洲 综合 制服 另类| 91色人妻| 很黄很污的免费网站| 四虎影视精品| 天天日天天爽| 欧美色97| 综合激情五月丁香| 四虎精品永久在线观看| 日韩欧美俄罗斯A片| 性色av一区二区| 99视频这有这里有精品| 欧美性区| 亚洲黄片免费在线播放| 亚熟在线| PMv在线观看| 很黄很污的免费网站| 97超碰站| 密臀在线免费观看| 亚洲天堂在线怕怕视频| 和协无码影院| 久久精品久久久久久久久| 九九九综合精品| 欧美成年人性爱视频免费观看| 狼人综合婷婷激情四射| 人人爱人人乐人人操| 国产人伦精品一区二区三区 | 999久久久久久久精| 91久久青青草原精品| 亚州操操穴网| 可以免费看黄片的视频| 久久久久网站-538在线视频-欧美永久乱码| 视频国产成人精品日本亚洲18| 91色噜噜狠狠| 国产精品久久久久无码A√| 日韩精品怡红院| 天天搞在线综合网| 人妖欧美一区二区| 久久草草欧美精品| 亚洲无码国产探花在线观看| 综合天天网| 国产一区二区三区导航| 大香蕉懂9| 国产天天骚| 隔壁邻居波多野结衣中文字幕| 欧美人人天天网| 超碰人妻在线| 亚洲成人激情小说视频| 国产精品天干天干综合网麻豆 | 久9久精品视频| 久久美女福利是上海美女| 亚洲熟女人妻中文字幕一区二区| 美腿色图| 日韩一级成人毛片免费观看 | 天天日夜夜爽| 日韩欧美操逼xxx| 超碰 国产熟女精品一区| 日韩另类色图| 尤物黄色在线观看网站| 偷偷人人精品女女久久| 国产AV天美| 国产一区二区三区精品观看啪| 欧美综合亚洲综合| 午夜后入| 欧美制服另类丝袜| 中文字幕中文字幕一区二区| 粉嫩AV一区二区夜夜| 97人亚洲综合字幕| 久久婷五月天| 国产91乱伦| 啊啊啊啊啊啊好多水| 欧洲精品久久| 热久久91婷婷| 不卡啪啪视频| 丁香九月 婷婷| 麻豆精品.欧美精品.日韩精品.| 丝袜美腿校园春色| 麻豆天美国美国产| 熟女人妻一区二区三区| 97超碰磁| 欧美色涩| 97操B| 91爱看| 天天看天天综合成人网| 免费一级毛片在线视频观看| 伦激情人妻另类人妻| 麻豆91熟妇人妻中文字幕茄子| 亚洲drav色图| 加勒比综合九九99视频在线播放| 人人天天欧洲| 大香蕉九九| 欧亚性爱啪啪| 久久av一级av少妇av高潮| AVE乱伦| 欧亚日韩一区在线| 久久久一区二区三区麻豆| 男人的亚洲天堂| 美腿丝袜高跟网免费视频免费视频| 97色伦欧美| 狠狠色综合网| 日本天天色| 日韩999| 国产高清成人传媒影视| 在线观看AV片| 国产成人一级av88| 日韩精品一区二区日韩| 91人妻最真实刺激绿帽| 一区二区三区美女超清| 大象AV在线| 欧美色狠| 国产区日韩区在线观看| 久操免费在线| 性色亚洲| 日韩成年人性爱视频| 男女无套 免费网站| 精品国产Av无码久久久伦古装| 久久精品国产亚洲av水密被窝| 精品女同一区二区三区| 欲综合网| 日夜伊人网| 欧美黄页| 性暴力欧美猛交在线直播| 亚洲成aⅴ人片不卡无码| 亚洲精品一区二区精品| 国产免a费看黄片在线| 日本精品无码三级网站| 国产亚洲色婷婷久久99精品91葵花宝典 | 操操逼操操逼操操逼逼| 午夜偷拍久久熟女| 亚洲熟女av日韩熟女| 色婷婷丁香五月| 91色综| 日本日日色视频| 久久久专区| 人妖欧美一区二区| 97视频在线看| 国产精品人人爽人人做可爱福利| 一牛影视成人片免费| 免费一级毛片在线视频观看| 天天操天天插| 国产一级久久久| 18禁久极品美女久久哦哟呀!| 看看日B真人视频| 東南亚性呦成人伦理资源在线视频| 诱惑网综合| 日婷婷| www.国产高潮精品| 熟女丝袜视频| 色阁阁AV综合网| 果冻传媒A片麻豆熟妇人妻| 最新亚洲黄色免费电影| 日本丝袜人妻内射| 欧美综合自拍成人自拍第二十页| 亚洲精品欧美专业| 东京男人天堂| 大屁股人妻女教师撅着屁股| 午夜寂寞欧美| 精品人妻二区三区| 综合网亚洲1| 麻豆国产97在线| 天天精品| 日日黄色三级网站| 啊v在线观看视频| 思思热久久成人| 天综合网| 97在线观看免费| 内射老妇BBWX0C0CK| 一级A啪啪啪啪| 91美女在线视频| 久久精品久久久久久久| 欧美日韩亚洲一区二区在线观看| 久久久久久久人妻| 97超碰人操| 国产毛片毛片4p懂色| 强奸乱亚洲| 亚热日本熟女| 天天上日日上日韩精品| 久久色情| 伊人午夜福利视频| 日本人妻中文字幕精品| 一本一道人妻久久一区二区三区 | 小草av不卡亚洲二区| 五月丁香激情四射| 色99在线| 男人天堂无码| 久久一区二区高清免费| 国产性感在线观看| 加勒比海色香蕉婷婷| 国产精品国产拍高清AV| 欧洲亚洲综合| 亚洲成人免费中文字幕| 75大香蕉| 日本成人免费一区二区三区| 天天91~综合入口| 91操熟女视频| 亚洲精品aa久久伊人| 97操在线| 亚洲AV无码翔田千里网站| av大香蕉网站| 26uuu最新| 99青草| 操国产高清| 日韩三级久久久| 色图综合| 97天天爽| 91久久青青草原精品| 天天综合91在线| 97在线免费看视频| 去干网最新版| 99精品丰满人妻无码| 人妻精品4K4K4K4K4| 人妻久久| 五月丁香综合| 97操97干| 2021久久国产综合精品青草| 蜜臀久久99精品| 无码免费在线观看黄色片| 日韩内射视频| 亚洲国产一级黄色视频| 老熟女91av| A片大香蕉在线| 毛片17S| 亚洲国产精品久久AV| 国产精品一二三区福利| 97超碰欧美手机| 日韩成人色图| 永久电影三级在线观看| 日本三级小说中文字幕| 亚洲 小说 欧美 激情 另类| 97天天做| 激情无码日韩| 99热这里只有精品1| 国产毛片精品一区二区色欲黄A片| 本道综合精品| 亚欧美天堂在线| 久久黄色性爱视频| 97综合久第一页| 九九热在线视频| 国产亚洲福利第一页丝袜| 1204av韩国| 亚洲精品人妻吞精av| www欧美91| 操我啊啊啊啊啊| 国产高清无码一区三区二区| 夜夜做夜夜爽精品视频| 一本久道久久综合狠狠爱| 亚洲在线网站| 激情情色五月天| 色色热| 欧美一区二区日韩三区| 四虎精品一区| 欧美最婬乱婬爆婬性视频| 久久人人爽爽人人爽人人片αV| 日夜尻逼网| 精品.99999| 日韩欧美字幕亚洲一区二区| 精…码一二三区| 麻豆精品三区视频| 9久综合网| 美女极品一区二区三区| 亚洲se91| 亚洲青青草| 精品.99999| 不卡啪啪视频| 思思视频免费看网站| aV中文麻| 日韩精品人妻中文字有码在线| 九月丁香婷婷| 青娱乐亚洲自拍| 大香蕉欧美| 精品久久久久成人码免| 人人污日韩一区二区| 乱伦熟女区| 久久精品国产亚洲AV高清演员表| 黄色成年| 嗯嗯啊啊的视频| 亚洲综合小视频小说在线观看| 99精品在线观看| 色综合av男人天堂| 一个人免费视频观看在线WWW| 精品视频一区二区| 无毛精品| 欧美日韩大陆黑人少妇99| 色噜噜综合在线| 超碰人人超在线观看| 大学生口爆吞精| dy888午夜老子影视达达兔| 国产怡红院在线| 劲爆欧美人妖三区91| 色诱中文字幕| 久久一区无码| 嗯啊不要在线| 久久香蕉影院| 一区在线观看中文字幕| 太久视频| 国产女人极品高潮毛片| 国产家庭乱伦性爱视频| 操国产逼| 亚洲 无码 偷拍| 深夜福利黄片| 国产一区二区二区按摩精品啪视频| 久久久久久久久女黄| 亚洲中文字幕一区| www.av不卡中文字幕| 亚洲性图91| 成人精品视频| 亚洲大胆人体av| 蜜屁Av| 久久超碰98| 亚洲老司机123专区| 日本一天色道久久久精品视频| 精品人妻一区二区三区-国产精品| 国产精品天美传媒| 天美av在线观看| WWW4虎| yazhousetuoumei| 97视频在| 久久久男人的天堂| 男人成人黄色视频在线观看免费下载| 欧美亚洲国产日本在线,久久精品国产| 超碰97最新人妻| 久久久99999久网站| 热热色色综合| 欧洲站一级二级三级h| 综合色久欲| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 国产久久久久久| 日本久久女同性恋视频| 亚洲精品国产精品成人| 欧美Aⅴ| 色情乱伦AV| 色五月综合网| 91老司机在线视频免费观看| 亚洲欧美综合色| 亚洲国内精品成人不卡| 亚洲素人综合| 亚洲天堂男人天堂网| 强奸乱伦 亚洲一区| 做爱A级亚欧| 任你爽视频| 亚洲日本男人天堂网| 亚洲综合图片在线| 怡红院成人视频| 亚洲人妻中文在线视频| 精品国产人成在线| 婷婷五月丁香五月| 天天综和| 天堂av最新电影网| 人人操人人摸人人骑| 国产精品自拍xxxx| 这里只有精品视频| 91熟女综合| 久久9久久| 国产日韩手机视频在线| 一区二区三区精品久久| 精品久久久av| 亚洲男人天堂2| 可免费观看的av毛片中日美韩| 国产福利在线视频网站| 天天91~综合入口| 日韩精品人妻中文字有码在线| 97国产|免费| 成全在线观看免费观看| 天天干天天拍| jiujiujiujingpin| 97色碰| 国产吞精a级片激情电影| 国产久久视频| 精品人妻15区| 一本大道不卡一二三区| av天天在线观看| 国产高清在线自在拍69| 精品国产一区探花在线观看| 91精品伊人久久久大香线蕉91 | 久久性生大片免费观看性| 粉嫩av在线一区二区| 好看的91视频| 一区二区三| 91色久| 国产欧美黑人丰满在线| 欧美AAAA黄片| 久久精品一区二区三区不卡| 屁股久久久久久久久| 在线播放成人高清免费视频| 色婷婷影院| 亚洲情色无码一区二区三区| 一区二区三区亚洲| 91色鬼| 91处女在线观看| 99爱在线视频| 99在线精品观看视频中文| 人妻 丝袜美腿 中文字幕| 综合久欧洲| 日韩视频中文字幕| 男人天堂一区二区| 中文字幕日韩情色| 乱伦日本色图AⅤ| 人妻丝袜肏逼| 亚川综合视频| 欧美精品双插| 一级AV性爱| 欧美综合色站| 桃花色综合影院| 中文字幕在线观看网页| 久久大黄片| 99.色网| 热思思免费视频| 刺激性视频黄页| 日韩综合无码一区久久92| 中文伊人大香蕉视频| 欧美日韩97| 天天肏美女| 色哟哟AⅤ| 久草精品国产蜜臀 | 国产精品乱码久久久久久久久久久久| 亚洲精品97久久| 久操九九九九| 另类图片欧美激情综合| 亚洲精品欧美专业| 精品国产乱码| 97超碰中文| 亚洲黄网在哪免费看| 亚洲综人网| 激情五月婷婷综合| 黄页av| 国产白领连续中出在线观看| 女欧美一区二三区| 亚洲和欧美裸体美女双飞视频| 亚洲国产精品9999在线观看| 1024午夜激情男人的天堂| 九九综合久久| 三级色影综合网| 亚洲国产精品久久久久婷婷青年| 国产又黄又粗又猛大片| 日本不卡二三区| 亚洲天堂无码| 久久少妇| 91国产美女丝袜足交精品视频| 思思热在线cao| 97 国产精品| 国产精品一二三区福利| 一级性爱视频免费在线| 久久久久久久久久久久欧美日| 免费看欧美美女黄色大片| 久久αⅴ| 青青草五月天| 日本熟女中文| 久久大黄片| 色亚州人久干视频在线观看免费版| 日本精品第一视频在'| 国产精品九九九| 超碰538| 五月丁香婷婷综合| 日韩精品一区二区高清| 久操| 日韩中文字幕熟妇人妻| 午夜影美女日鸡鸡天天视频国产| 人人妻人人爽一区二区三区| 日本精品88888888| 在线国产一区二区av| 无码精品久久久久久亚洲| 欧美国产操逼| 久久一区无码| 国产高清成人传媒影视| 中日韩免费看男女操逼大全| 97视频新免费| 色性荡荡荡荡视频| 秋霞一级视频在线观看免费| 视频国产成人精品日本亚洲18| 99热18这里只有精品| 久jiu久神马影院| 蜜臀AV网站| 亚洲日本激情| 97资源久久| 夜色97| 美女高潮视频91| 天天操夜夜操| 国产午夜无码片在线观看影视| 国产精品熟女一区二区三区| 蜜臀av中文字幕| 青青操少妇| 六六久久日韩不卡| 天天精品| 日本操大逼| 99re免费视频精品全部| 国产97视频| 亚洲91射| 国产精品久久久999| 少妇被玩视频二三区| 尹人大香蕉视频在线| 九九综合久久| 91人妻中文| 97资源视频| 91一区二区三区蜜桃| 国产三级片在线观看| 就去色综合| 四虎免费在线播放| 日韩精品影视| 精品999日本| 麻豆福利视频导航| 美女人妻色网站| 欧美日日网| 操狠狠| 夜夜操二区| www.色婷婷| 色婷婷亚洲婷婷| 大香蕉啪啪啪| 啪啪一区| 五月综合色| 日韩高潮一区| 亚洲欧美精品一区天堂久久| 色色婷婷五月| 五月丁香婷婷综合| 欧美成人精品A片免费一区99| 簧片免费看视频| 婷婷丁香五月激情啪啪| 日本午夜精品理论片A级APP发布| 亚洲熟女av日韩熟女| 天天综合网1| 九九久久国产精品| 色 婷97| 日日天天久久啊啊aaa| 亚洲色图 欧美热图 清纯唯美 另类自拍| 日韩精品一区二区三区四虎影视| 大香蕉久久| 天美国产精品| 打av高清| 亚州综合色图| 色哟哟精品1精品2| 5252色欧美在线男人的天堂| 麻豆天美在线| 亚洲欧洲激情卡通另类文学四射小说网站 | 殴美日韩m| 欧美日韩大陆黑人少妇99|