日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

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

LangChain與Milvus向量數(shù)據(jù)庫DML實(shí)戰(zhàn):構(gòu)建動(dòng)態(tài)可維護(hù)的RAG應(yīng)用

LangChain與Milvus向量數(shù)據(jù)庫DML實(shí)戰(zhàn):構(gòu)建動(dòng)態(tài)可維護(hù)的RAG應(yīng)用 如果你正在構(gòu)建一個(gè)基于大語言模型LLM的智能應(yīng)用比如一個(gè)能回答專業(yè)問題的知識(shí)庫助手你很可能遇到過這個(gè)核心難題如何讓模型“記住”并快速“找到”海量的私有文檔信息直接讓模型去“閱讀”成千上萬份PDF、Word文檔是不現(xiàn)實(shí)的這會(huì)導(dǎo)致響應(yīng)極慢、成本高昂且容易超出模型的上下文長(zhǎng)度限制。主流的解決方案是“檢索增強(qiáng)生成”RAG其核心在于一個(gè)高效的向量數(shù)據(jù)庫。而 Milvus正是這個(gè)領(lǐng)域備受矚目的開源明星。但很多開發(fā)者止步于“Hello World”式的示例把文檔灌進(jìn)去問個(gè)簡(jiǎn)單問題得到答案就覺得大功告成。然而真實(shí)的生產(chǎn)環(huán)境是動(dòng)態(tài)的知識(shí)需要更新錯(cuò)誤的文檔需要?jiǎng)h除過時(shí)的信息需要修正。這時(shí)你就會(huì)遇到本文要解決的核心問題如何對(duì) Milvus 向量數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行可靠的增、刪、改DML操作并確保你的 LangChain RAG 應(yīng)用能隨之動(dòng)態(tài)、準(zhǔn)確地響應(yīng)本文將帶你超越基礎(chǔ)教程深入langchain-milvus集成的 DML 實(shí)戰(zhàn)。我們不僅會(huì)演示如何插入、刪除和更新數(shù)據(jù)更會(huì)剖析這些操作背后的原理、在 LangChain 鏈中的最佳集成位置以及你必須避開的那些“坑”——比如刪除操作的實(shí)際行為、元數(shù)據(jù)過濾的陷阱以及如何保證數(shù)據(jù)變更后檢索的實(shí)時(shí)性。讀完本文你將能構(gòu)建一個(gè)真正可維護(hù)、可演化的 RAG 應(yīng)用而不僅僅是一個(gè)靜態(tài)的演示原型。1. 為什么 Milvus 的 DML 操作是 RAG 應(yīng)用的“生命線”在原型階段我們往往只關(guān)心“寫入”和“查詢”。但一旦應(yīng)用上線數(shù)據(jù)就活了。想象以下幾個(gè)場(chǎng)景知識(shí)更新公司發(fā)布了新的產(chǎn)品手冊(cè)你需要將新文檔的向量添加到數(shù)據(jù)庫中而不是重建整個(gè)庫。錯(cuò)誤修正發(fā)現(xiàn)之前導(dǎo)入的一份技術(shù)規(guī)格表有錯(cuò)誤你需要定位并刪除或更新對(duì)應(yīng)的錯(cuò)誤信息片段。數(shù)據(jù)隔離你的系統(tǒng)服務(wù)于多個(gè)客戶多租戶需要能安全地刪除某個(gè)客戶的全部數(shù)據(jù)。合規(guī)要求根據(jù)用戶請(qǐng)求需要從知識(shí)庫中徹底抹去某些敏感信息。如果缺乏可靠的 DML數(shù)據(jù)操作語言支持上述每一個(gè)場(chǎng)景都會(huì)讓你陷入困境要么全量重建向量庫耗時(shí)耗力要么容忍數(shù)據(jù)的不一致和錯(cuò)誤。Milvus 的核心價(jià)值之一就是它提供了完整、高效的 DML 接口insert,delete,upsert并且與 LangChain 的VectorStore抽象層進(jìn)行了深度集成。這使得在 LangChain 應(yīng)用中進(jìn)行數(shù)據(jù)維護(hù)變得像操作傳統(tǒng)數(shù)據(jù)庫一樣直觀但背后卻涉及向量索引的復(fù)雜管理。本文將聚焦于langchain-milvus這個(gè)官方集成包通過實(shí)戰(zhàn)代碼讓你掌握這條“生命線”的操控方法。2. 核心概念與工具準(zhǔn)備在開始實(shí)戰(zhàn)前我們需要統(tǒng)一幾個(gè)關(guān)鍵概念并準(zhǔn)備好戰(zhàn)場(chǎng)。2.1 關(guān)鍵概念澄清Milvus一個(gè)高性能、云原生的開源向量數(shù)據(jù)庫專為海量向量數(shù)據(jù)的存儲(chǔ)、索引和檢索而設(shè)計(jì)。它支持標(biāo)量過濾、動(dòng)態(tài) Schema、數(shù)據(jù)分片等高級(jí)特性。LangChain一個(gè)用于構(gòu)建由 LLM 驅(qū)動(dòng)的應(yīng)用程序的框架。它通過“鏈”Chain將模型、提示、記憶、檢索器等組件連接起來。其VectorStore模塊提供了與各種向量數(shù)據(jù)庫交互的統(tǒng)一接口。langchain-milvus這是 LangChain 官方維護(hù)的 Milvus 集成包。它實(shí)現(xiàn)了VectorStore接口封裝了 Milvus Python SDK 的復(fù)雜調(diào)用讓我們可以用更 LangChain 風(fēng)格的方式操作 Milvus。DML in Vector DB與傳統(tǒng)數(shù)據(jù)庫的增刪改查類似但在向量數(shù)據(jù)庫中插入Insert將文本經(jīng)過嵌入模型Embedding Model轉(zhuǎn)化為向量后連同元數(shù)據(jù)metadata一起存入集合Collection。刪除Delete通過指定主鍵如id或復(fù)雜的元數(shù)據(jù)過濾條件刪除對(duì)應(yīng)的向量實(shí)體。特別注意Milvus 的刪除是邏輯刪除軟刪除數(shù)據(jù)不會(huì)立即從磁盤物理清除而是在后續(xù)的壓縮Compaction過程中清理。刪除的實(shí)體在之后的檢索中不可見。更新UpsertMilvus 沒有直接的update操作。upsert是“更新或插入”的合并操作。如果提供的主鍵已存在則用新數(shù)據(jù)覆蓋舊數(shù)據(jù)先刪除舊再插入新如果不存在則執(zhí)行插入。這是實(shí)現(xiàn)“修改”功能的主要方式。集合Collection與分區(qū)PartitionMilvus 中Collection類似于數(shù)據(jù)庫的表Partition是表內(nèi)的數(shù)據(jù)分區(qū)常用于數(shù)據(jù)隔離如按租戶、按類別分區(qū)。在 LangChain 中我們通常在一個(gè)Collection內(nèi)操作partition_key可作為元數(shù)據(jù)的一部分用于高效過濾。2.2 環(huán)境與工具準(zhǔn)備我們將在一個(gè)干凈的 Python 環(huán)境中進(jìn)行。請(qǐng)確保已安裝以下依賴# 創(chuàng)建并激活虛擬環(huán)境 (可選但推薦) python -m venv venv source venv/bin/activate # Linux/macOS # venv\Scripts\activate # Windows # 安裝核心依賴 pip install langchain langchain-milvus langchain-openai pymilvus # 如果你使用其他嵌入模型如 sentence-transformers # pip install sentence-transformers版本說明本文基于langchain-milvus0.2.0它提供了更完善的 DML 方法封裝。請(qǐng)確保你的版本足夠新。Milvus 服務(wù)你需要一個(gè)運(yùn)行中的 Milvus 實(shí)例。有以下幾種方式Docker推薦用于本地開發(fā)# 拉取并運(yùn)行 Milvus 單機(jī)版 docker run -d --name milvus-standalone \ -p 19530:19530 -p 9091:9091 \ milvusdb/milvus:latest-standalone安裝包從 Milvus 官網(wǎng) 下載對(duì)應(yīng)系統(tǒng)的安裝包。云服務(wù)使用 Zilliz Cloud 等托管服務(wù)。本文假設(shè)你使用本地 Docker 運(yùn)行的 Milvus連接地址為localhost:19530。3. 初始化連接 Milvus 與創(chuàng)建集合一切操作始于一個(gè)穩(wěn)定的連接和一張定義好的“表”Collection。3.1 建立連接與 VectorStore 對(duì)象我們使用Milvus類來連接數(shù)據(jù)庫并創(chuàng)建一個(gè) VectorStore 對(duì)象。這里我們使用 OpenAI 的嵌入模型你需要準(zhǔn)備一個(gè)OPENAI_API_KEY。# 文件init_milvus.py import os from langchain_milvus import Milvus from langchain_openai import OpenAIEmbeddings # 設(shè)置環(huán)境變量請(qǐng)?zhí)鎿Q為你的實(shí)際密鑰 os.environ[OPENAI_API_KEY] your-openai-api-key # 1. 定義嵌入模型 embeddings OpenAIEmbeddings(modeltext-embedding-3-small) # 使用較小、較快的模型 # 2. 連接參數(shù) connection_args { uri: http://localhost:19530, # Milvus 服務(wù)地址 # 如果 Milvus 啟用了認(rèn)證需要添加以下參數(shù) # user: username, # password: password, # token: your-token, } # 3. 初始化 Milvus VectorStore # 如果集合不存在會(huì)自動(dòng)創(chuàng)建。我們指定集合名為 langchain_demo。 vector_store Milvus( embedding_functionembeddings, collection_namelangchain_demo, connection_argsconnection_args, drop_oldFalse, # 重要如果集合已存在不要?jiǎng)h除它。設(shè)為 True 會(huì)清空現(xiàn)有數(shù)據(jù) auto_idTrue, # 讓 Milvus 自動(dòng)生成唯一主鍵 id ) print(fMilvus VectorStore 初始化成功連接到集合: {vector_store.collection_name})關(guān)鍵參數(shù)解釋collection_name: 集合名稱相當(dāng)于表名。drop_old:務(wù)必謹(jǐn)慎設(shè)置為True會(huì)在初始化時(shí)刪除已存在的同名集合并新建一個(gè)空集合導(dǎo)致數(shù)據(jù)丟失。生產(chǎn)環(huán)境通常設(shè)為False。auto_id: 設(shè)置為True時(shí)Milvus 會(huì)為每條數(shù)據(jù)自動(dòng)生成一個(gè)整數(shù)型主鍵。如果你有自己的業(yè)務(wù) ID如字符串類型的文檔ID可以設(shè)為False并在插入數(shù)據(jù)時(shí)通過ids參數(shù)指定。connection_args: 除了uri還可能包含secure是否使用 TLS、client_key_path等高級(jí)參數(shù)。運(yùn)行此腳本如果沒有報(bào)錯(cuò)說明連接成功。你可以通過 Milvus 的管理工具如 Attu來查看是否創(chuàng)建了langchain_demo集合。4. 核心 DML 操作實(shí)戰(zhàn)現(xiàn)在進(jìn)入正題。我們將模擬一個(gè)企業(yè)知識(shí)庫的常見維護(hù)操作。4.1 插入數(shù)據(jù)構(gòu)建初始知識(shí)庫首先我們向空集合中插入第一批文檔。# 文件insert_data.py from init_milvus import vector_store # 導(dǎo)入上一步初始化的 vector_store # 準(zhǔn)備要插入的文檔 documents [ LangChain 是一個(gè)用于開發(fā)由大語言模型驅(qū)動(dòng)的應(yīng)用程序的框架。, Milvus 是一個(gè)高性能、開源向量數(shù)據(jù)庫專為海量向量相似性搜索而設(shè)計(jì)。, 檢索增強(qiáng)生成RAG通過結(jié)合檢索器和生成模型來提升回答的準(zhǔn)確性和相關(guān)性。, Python 是一種廣泛使用的高級(jí)編程語言以其簡(jiǎn)潔的語法和強(qiáng)大的庫生態(tài)系統(tǒng)而聞名。, ] # 準(zhǔn)備對(duì)應(yīng)的元數(shù)據(jù)。元數(shù)據(jù)用于過濾和精煉檢索結(jié)果。 metadatas [ {source: framework_doc, category: langchain, version: 1.0}, {source: db_doc, category: vector_db, version: 2.0}, {source: technique_doc, category: rag, version: 1.0}, {source: language_doc, category: programming, version: 1.0}, ] # 執(zhí)行插入操作 # add_texts 是 LangChain VectorStore 接口的標(biāo)準(zhǔn)方法內(nèi)部會(huì)調(diào)用 Milvus 的 insert。 inserted_ids vector_store.add_texts(textsdocuments, metadatasmetadatas) print(f成功插入 {len(inserted_ids)} 條文檔。) print(f生成的文檔ID列表前5個(gè): {inserted_ids[:5]})執(zhí)行與驗(yàn)證 運(yùn)行腳本后會(huì)輸出插入的文檔數(shù)量。這些文檔會(huì)被OpenAIEmbeddings模型轉(zhuǎn)換為向量然后連同文本和元數(shù)據(jù)一起存儲(chǔ)到 Milvus 的langchain_demo集合中。你可以立即進(jìn)行一次檢索來驗(yàn)證# 接在插入腳本后或新建一個(gè)文件 query 什么是向量數(shù)據(jù)庫 results vector_store.similarity_search(query, k2) print(f查詢: {query}) for i, doc in enumerate(results): print(f[結(jié)果 {i1}] {doc.page_content} | 元數(shù)據(jù): {doc.metadata})你應(yīng)該能看到與Milvus相關(guān)的文檔被檢索出來。4.2 刪除數(shù)據(jù)清理錯(cuò)誤或過時(shí)信息假設(shè)我們發(fā)現(xiàn)關(guān)于Python的那條文檔描述過于簡(jiǎn)單想要?jiǎng)h除它。在 Milvus 中刪除需要依據(jù)主鍵id或通過元數(shù)據(jù)表達(dá)式進(jìn)行過濾。場(chǎng)景一通過主鍵 ID 刪除在上一步的插入操作中add_texts返回了插入數(shù)據(jù)的 ID 列表。我們可以用這個(gè) ID 來刪除。# 文件delete_by_id.py from init_milvus import vector_store # 假設(shè)我們知道要?jiǎng)h除的文檔 ID 是 inserted_ids 列表中的最后一個(gè)。 # 在實(shí)際應(yīng)用中這個(gè)ID可能來自之前的操作記錄或查詢結(jié)果。 # 這里我們模擬已知ID為 444具體值需根據(jù)你實(shí)際運(yùn)行 insert_data.py 的輸出調(diào)整。 target_id 444 # 請(qǐng)?zhí)鎿Q為實(shí)際ID # 方法一使用 Milvus 提供的 delete 方法更底層更靈活 # 首先需要獲取 collection 對(duì)象 collection vector_store.collection # 構(gòu)建刪除表達(dá)式id in [target_id] expr fid in [{target_id}] # 執(zhí)行刪除 delete_result collection.delete(expr) print(f通過表達(dá)式刪除結(jié)果: {delete_result}) # 方法二使用 LangChain-Milvus 封裝的 delete 方法更簡(jiǎn)潔但可能依賴版本 # 注意langchain-milvus 的 delete 方法可能直接接收ID列表或表達(dá)式。 # 請(qǐng)查閱你所使用版本的文檔。一個(gè)常見的用法是 try: # 某些版本支持直接傳 ids vector_store.delete(ids[target_id]) print(f已通過ID刪除文檔: {target_id}) except Exception as e: print(f使用 vector_store.delete 時(shí)出錯(cuò)可能方法簽名不同: {e}) # 驗(yàn)證刪除再次查詢“Python” results vector_store.similarity_search(Python, k5) print(f\n刪除后查詢‘Python’結(jié)果數(shù): {len(results)}) if len(results) 0: for doc in results: print(f - {doc.page_content[:50]}...) else: print( 未找到相關(guān)文檔刪除成功。)場(chǎng)景二通過元數(shù)據(jù)過濾條件刪除更常見的場(chǎng)景是批量刪除例如刪除所有category為programming的舊版本文檔。# 文件delete_by_metadata.py from init_milvus import vector_store # 構(gòu)建刪除表達(dá)式。Milvus 的表達(dá)式語法類似于簡(jiǎn)單的 SQL WHERE 子句。 # 注意字段名需要用雙引號(hào)括起來字符串值用單引號(hào)。 delete_expr category programming and version 1.0 collection vector_store.collection delete_result collection.delete(delete_expr) print(f通過元數(shù)據(jù)表達(dá)式刪除結(jié)果: {delete_result}) print(f表達(dá)式: {delete_expr}) # 重要提醒刪除操作是異步的 # 執(zhí)行刪除后索引可能不會(huì)立即更新。在緊接著的檢索中被刪除的數(shù)據(jù)可能暫時(shí)還能被查到取決于一致性級(jí)別。 # 對(duì)于強(qiáng)一致性要求可以在刪除后執(zhí)行 flush() 并等待索引重建但這在 LangChain 日常使用中較少見。 # collection.flush()關(guān)于刪除的深度理解邏輯刪除Milvus 的刪除是標(biāo)記刪除并非立即物理擦除。這有利于性能但意味著存儲(chǔ)空間不會(huì)立即釋放。一致性刪除操作對(duì)后續(xù)查詢的可見性取決于集合的一致性級(jí)別Consistency Level。默認(rèn)級(jí)別Bounded下刪除可能不會(huì)立即在所有查詢節(jié)點(diǎn)上生效存在短暫延遲。壓縮后臺(tái)的自動(dòng)壓縮Compaction進(jìn)程會(huì)定期清理被標(biāo)記刪除的數(shù)據(jù)回收存儲(chǔ)空間。4.3 更新數(shù)據(jù)使用 Upsert 修正信息如前所述Milvus 沒有直接的update。我們需要使用upsert操作。upsert的邏輯是如果存在則替換如果不存在則插入。假設(shè)我們要更新LangChain的文檔將其版本號(hào)從1.0更新到2.0并修正內(nèi)容。# 文件upsert_data.py from init_milvus import vector_store # 1. 首先我們需要找到要更新的文檔的 ID。 # 我們可以通過元數(shù)據(jù)查詢來獲取。 search_expr source framework_doc and category langchain # 注意Milvus 的 query 接口用于根據(jù)表達(dá)式查詢數(shù)據(jù)返回完整的實(shí)體包括向量、標(biāo)量字段。 # 但 langchain-milvus 可能沒有直接暴露 query 方法。我們可以使用 collection.query。 collection vector_store.collection # 加載集合到內(nèi)存對(duì)于查詢是必要的 collection.load() # 執(zhí)行查詢指定要輸出的字段 query_results collection.query( exprsearch_expr, output_fields[id, text, source, category, version] # “text”是存儲(chǔ)原始文本的字段名需確認(rèn) ) # 注意在 langchain-milvus 中文本存儲(chǔ)的字段名默認(rèn)可能是 text 或由 text_field 參數(shù)指定。 print(查詢到的待更新文檔:) for res in query_results: print(res) old_id res[id] # 獲取主鍵ID old_text res.get(text) break # 假設(shè)只更新第一個(gè)匹配的文檔 if not query_results: print(未找到要更新的文檔將執(zhí)行插入操作。) old_id None old_text None # 2. 準(zhǔn)備新的文檔內(nèi)容和元數(shù)據(jù) new_text LangChain 是一個(gè)強(qiáng)大的框架用于構(gòu)建由大語言模型驅(qū)動(dòng)的應(yīng)用程序。它提供了組件化和鏈?zhǔn)秸{(diào)用的能力極大簡(jiǎn)化了LLM應(yīng)用的開發(fā)。 new_metadata {source: framework_doc_v2, category: langchain, version: 2.0} # 3. 執(zhí)行 Upsert。 # 在 Milvus 層面upsert 需要提供完整的數(shù)據(jù)行包括主鍵。 # 如果 old_id 存在則用新數(shù)據(jù)覆蓋該ID的記錄如果為 None則插入新記錄。 # 由于 langchain-milvus 的 add_texts 在 auto_idTrue 時(shí)無法指定ID我們需要用更底層的方式。 # 這里演示使用 pymilvus 直接操作。 from pymilvus import DataType # 假設(shè)我們集合的 Schema 包含id (int64), vector (float vector), text (varchar), source, category, version 等標(biāo)量字段。 # 我們需要構(gòu)造與 Schema 匹配的數(shù)據(jù)。 data [ [old_id if old_id else 0], # ID列。如果更新用舊ID如果插入可以傳0或不傳取決于auto_id但upsert要求提供。這里用0占位實(shí)際由系統(tǒng)處理或覆蓋。 [new_text], # 文本列 [new_metadata[source]], # source列 [new_metadata[category]], # category列 [new_metadata[version]], # version列 # 注意我們?nèi)鄙傧蛄苛衭psert 需要提供完整的向量或者能根據(jù)文本生成向量。 ] # 直接使用 pymilvus 的 upsert 較為復(fù)雜需要精確對(duì)齊 Schema。 # 更實(shí)用的方法在 LangChain 層面我們可以采用“先刪后插”來模擬更新。 # 這是一個(gè)更通用、更不易出錯(cuò)的方法。 print(\n--- 采用‘先刪后插’策略模擬更新 ---) if old_id: # 步驟A刪除舊文檔 delete_expr fid in [{old_id}] collection.delete(delete_expr) print(f已刪除舊文檔 ID: {old_id}) # 步驟B插入新文檔使用 add_texts它會(huì)自動(dòng)生成向量 new_ids vector_store.add_texts(texts[new_text], metadatas[new_metadata]) print(f已插入新文檔ID: {new_ids[0]}) # 驗(yàn)證更新 print(\n驗(yàn)證更新后的查詢結(jié)果) results vector_store.similarity_search(LangChain 框架, k2) for doc in results: print(f內(nèi)容: {doc.page_content[:80]}... | 版本: {doc.metadata.get(version)})關(guān)鍵點(diǎn)upsert的復(fù)雜性直接使用 Milvus 的upsert需要手動(dòng)處理向量生成和數(shù)據(jù)對(duì)齊在 LangChain 工作流中并不方便?!跋葎h后插”策略對(duì)于 LangChain 應(yīng)用更清晰、更可控的“更新”流程是1) 根據(jù)業(yè)務(wù)邏輯定位要更新的文檔ID2) 刪除這些ID的文檔3) 使用add_texts插入新的文檔含新向量。這雖然涉及兩步操作但邏輯簡(jiǎn)單且能充分利用 LangChain 的嵌入模型自動(dòng)生成向量。版本控制在元數(shù)據(jù)中加入version、update_time等字段是管理文檔演變歷史的良好實(shí)踐。5. 在 LangChain 鏈中集成動(dòng)態(tài)數(shù)據(jù)管理DML 操作不應(yīng)該只是孤立的腳本。在真實(shí)的 RAG 應(yīng)用中它們需要被集成到業(yè)務(wù)邏輯中。以下是一個(gè)模擬的“知識(shí)庫管理后臺(tái)”的簡(jiǎn)單鏈條設(shè)計(jì)。# 文件rag_with_management.py from langchain.chains import RetrievalQA from langchain_openai import ChatOpenAI from init_milvus import vector_store, embeddings from langchain.text_splitter import RecursiveCharacterTextSplitter class KnowledgeBaseManager: def __init__(self, vector_store): self.vector_store vector_store self.llm ChatOpenAI(modelgpt-3.5-turbo, temperature0) self.qa_chain RetrievalQA.from_chain_type( llmself.llm, chain_typestuff, retrievervector_store.as_retriever(search_kwargs{k: 3}), return_source_documentsTrue ) self.text_splitter RecursiveCharacterTextSplitter(chunk_size500, chunk_overlap50) def add_document(self, full_text, metadata): 向知識(shí)庫添加新文檔自動(dòng)分塊 print(f正在處理文檔長(zhǎng)度: {len(full_text)} 字符) chunks self.text_splitter.split_text(full_text) metadatas [metadata.copy() for _ in chunks] # 可以為每個(gè)塊添加一個(gè) chunk_id 到元數(shù)據(jù)中便于追蹤 for i, meta in enumerate(metadatas): meta[chunk_index] i ids self.vector_store.add_texts(textschunks, metadatasmetadatas) print(f文檔已分塊并插入共 {len(ids)} 個(gè)塊。) return ids def delete_by_source(self, source_value): 根據(jù)來源刪除所有相關(guān)文檔塊 expr fsource {source_value} collection self.vector_store.collection # 注意先查詢一下有多少條確認(rèn)范圍 count_expr fcount(*) where {expr} # 這里簡(jiǎn)化處理實(shí)際應(yīng)使用 count 接口 print(f準(zhǔn)備刪除 source 為 {source_value} 的所有文檔...) try: # 執(zhí)行刪除 res collection.delete(expr) print(f刪除請(qǐng)求已提交。) # 在實(shí)際生產(chǎn)環(huán)境中這里可能需要記錄刪除操作日志或觸發(fā)后續(xù)清理任務(wù)。 except Exception as e: print(f刪除操作失敗: {e}) return False return True def query_knowledge_base(self, question): 查詢知識(shí)庫并獲取答案 result self.qa_chain.invoke({query: question}) answer result[result] sources [doc.metadata.get(source, Unknown) for doc in result[source_documents]] print(f\n問題: {question}) print(f答案: {answer}) print(f參考來源: {list(set(sources))}) # 去重 return answer, result[source_documents] # 使用示例 if __name__ __main__: manager KnowledgeBaseManager(vector_store) # 場(chǎng)景添加一份新政策文檔 new_policy 公司最新差旅政策于2023年10月更新。主要內(nèi)容包括 1. 經(jīng)濟(jì)艙機(jī)票需提前7天預(yù)訂。 2. 住宿標(biāo)準(zhǔn)為一線城市每晚不超過800元二線城市不超過600元。 3. 所有報(bào)銷需通過財(cái)務(wù)系統(tǒng)在行程結(jié)束后30天內(nèi)提交。 manager.add_document(new_policy, {source: travel_policy_202310, doc_type: policy, effective_date: 2023-10-01}) # 場(chǎng)景查詢 manager.query_knowledge_base(公司的差旅住宿標(biāo)準(zhǔn)是多少) # 場(chǎng)景刪除舊的、過期的政策 # 假設(shè)我們知道舊政策的 source 標(biāo)識(shí)符 # manager.delete_by_source(travel_policy_202301)這個(gè)KnowledgeBaseManager類將 DML 操作封裝成了業(yè)務(wù)方法并與檢索問答鏈結(jié)合形成了一個(gè)簡(jiǎn)易但完整的知識(shí)庫后臺(tái)管理原型。6. 運(yùn)行驗(yàn)證與效果觀察運(yùn)行上述rag_with_management.py腳本你應(yīng)該能看到以下輸出插入過程顯示文檔被分塊處理并成功插入。查詢過程LLM 基于從 Milvus 檢索到的政策文檔塊生成關(guān)于差旅標(biāo)準(zhǔn)的答案并列出參考來源 (travel_policy_202310)。刪除過程如果取消注釋會(huì)提交刪除舊政策文檔的請(qǐng)求。關(guān)鍵驗(yàn)證點(diǎn)插入后即時(shí)檢索新插入的文檔能否在接下來的查詢中被立即檢索到是的在默認(rèn)一致性級(jí)別下通常可以。刪除后檢索被刪除的文檔是否從后續(xù)的檢索結(jié)果中消失是的但可能有短暫延遲。元數(shù)據(jù)過濾在Retriever中可以通過search_kwargs設(shè)置filter實(shí)現(xiàn)基于元數(shù)據(jù)的檢索。例如只檢索特定doc_type或特定日期之后的文檔。這本身不是 DML但卻是利用 DML 操作如更新版本號(hào)所維護(hù)的元數(shù)據(jù)進(jìn)行精準(zhǔn)查詢的關(guān)鍵。# 在創(chuàng)建 Retriever 時(shí)添加過濾器 from langchain.vectorstores import Milvus # 假設(shè)我們只想查詢 policy 類型的文檔 retriever vector_store.as_retriever( search_kwargs{ k: 4, filter: doc_type policy # Milvus 布爾表達(dá)式 } )7. 常見問題與排查思路問題現(xiàn)象可能原因排查方式解決方案add_texts成功但查詢不到新數(shù)據(jù)1. 集合未加載Load。2. 索引未構(gòu)建或構(gòu)建中。3. 一致性級(jí)別導(dǎo)致延遲可見。1. 檢查collection.load()是否已調(diào)用。2. 通過 Attu 或collection.index()查看索引狀態(tài)。3. 查詢后稍等片刻再試。1. 在查詢前顯式調(diào)用collection.load()。2. 確保索引構(gòu)建完成狀態(tài)為Finished。3. 對(duì)于生產(chǎn)環(huán)境理解并設(shè)置合適的consistency_level。刪除數(shù)據(jù)后仍能被檢索到1. 邏輯刪除未完成壓縮。2. 查詢時(shí)未使用強(qiáng)一致性。3. 表達(dá)式寫錯(cuò)未匹配到目標(biāo)數(shù)據(jù)。1. 檢查刪除操作的返回結(jié)果delete_count。2. 在查詢時(shí)指定consistency_levelStrong性能有損。3. 使用collection.query驗(yàn)證刪除表達(dá)式是否能查出數(shù)據(jù)。1. 理解這是邏輯刪除的正?,F(xiàn)象或手動(dòng)觸發(fā)compaction。2. 對(duì)于需要立即生效的場(chǎng)景使用強(qiáng)一致性查詢。3. 仔細(xì)檢查刪除表達(dá)式語法使用 Attu 工具測(cè)試。upsert或“先刪后插”后出現(xiàn)重復(fù)或數(shù)據(jù)不一致1. 刪除和插入不是原子操作中間可能有并發(fā)查詢。2. 插入時(shí)生成了新的 ID導(dǎo)致舊ID被刪新ID插入但業(yè)務(wù)邏輯上它們代表同一實(shí)體。1. 檢查是否有其他進(jìn)程同時(shí)在讀寫。2. 審查業(yè)務(wù)邏輯確?!案隆闭Z義正確。是否應(yīng)該保留歷史版本1. 考慮引入分布式鎖或更細(xì)粒度的版本控制如增加is_latest標(biāo)志。2. 使用upsert并確保能穩(wěn)定生成業(yè)務(wù)主鍵如doc_id而非依賴自動(dòng)ID。嵌入模型變更導(dǎo)致檢索效果差插入和查詢使用了不同的嵌入模型向量空間不一致。確認(rèn)Milvus初始化時(shí)傳入的embedding_function始終是同一個(gè)模型實(shí)例。確保整個(gè)應(yīng)用生命周期使用相同的嵌入模型。如需切換模型通常需要重建整個(gè)向量庫。連接失敗 (Cannot connect to Milvus)1. Milvus 服務(wù)未啟動(dòng)。2. 網(wǎng)絡(luò)或端口不通。3. 認(rèn)證信息錯(cuò)誤。1. 運(yùn)行docker ps檢查容器狀態(tài)。2. 使用telnet localhost 19530測(cè)試端口。3. 檢查connection_args中的uri、token等。1. 啟動(dòng) Milvus 服務(wù)。2. 檢查防火墻和網(wǎng)絡(luò)配置。3. 核對(duì)連接參數(shù)。8. 最佳實(shí)踐與工程建議主鍵設(shè)計(jì)如果使用auto_idFalse請(qǐng)使用有業(yè)務(wù)意義的、全局唯一的字符串或數(shù)字作為主鍵如doc_id:uuid。這能極大簡(jiǎn)化后續(xù)的更新和刪除操作。元數(shù)據(jù)規(guī)劃精心設(shè)計(jì)元數(shù)據(jù) Schema。常見的字段包括source文檔來源、doc_id原文檔ID、chunk_index塊索引、version、created_time、updated_time、owner租戶/用戶ID等。良好的元數(shù)據(jù)是高效過濾和管理的基石。批量操作無論是插入還是刪除都應(yīng)盡量批量進(jìn)行以減少網(wǎng)絡(luò)往返和事務(wù)開銷。add_texts本身支持批量。刪除時(shí)盡量用id in [id1, id2, ...]表達(dá)式一次性刪除多個(gè)。錯(cuò)誤處理與重試網(wǎng)絡(luò)操作和數(shù)據(jù)庫操作都可能失敗。在生產(chǎn)代碼中務(wù)必對(duì)add_texts、delete等操作添加重試邏輯和異常捕獲。監(jiān)控與日志記錄重要的 DML 操作尤其是刪除和批量更新的詳細(xì)信息包括操作者、時(shí)間、影響的數(shù)據(jù)ID或條件。這對(duì)于數(shù)據(jù)審計(jì)和問題排查至關(guān)重要。測(cè)試環(huán)境先行任何刪除和更新腳本都應(yīng)在測(cè)試環(huán)境充分驗(yàn)證后再上生產(chǎn)??梢钥紤]在刪除前先執(zhí)行一次query預(yù)覽將要影響的數(shù)據(jù)。理解一致性權(quán)衡Milvus 提供了不同的一致性級(jí)別。在追求極高查詢性能的場(chǎng)景可能接受最終一致性在要求數(shù)據(jù)強(qiáng)一致性的金融或合規(guī)場(chǎng)景則需要選擇Strong一致性并承受相應(yīng)的性能損耗。版本化與歷史數(shù)據(jù)對(duì)于重要的知識(shí)文檔單純的“覆蓋式”更新可能不夠??梢钥紤]版本化方案插入新版本文檔并通過元數(shù)據(jù)如is_latestTrue標(biāo)記當(dāng)前生效版本而不是物理刪除舊版本。這保留了歷史記錄并支持回滾。掌握 LangChain 與 Milvus 的 DML 操作意味著你能夠構(gòu)建的 RAG 應(yīng)用從靜態(tài)的“只讀”演示進(jìn)化成了動(dòng)態(tài)的、可維護(hù)的、貼近真實(shí)業(yè)務(wù)需求的系統(tǒng)。數(shù)據(jù)不再是初始化后一成不變的背景板而是可以隨著業(yè)務(wù)流動(dòng)和演化的核心資產(chǎn)。從插入第一份文檔到精準(zhǔn)刪除一條錯(cuò)誤記錄再到平滑更新整個(gè)知識(shí)體系每一步操作都關(guān)乎著最終應(yīng)用的可信度和智能水平。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产强奸无码乱伦| 成人日韩中文字幕| 92久久| 亚洲 日韩 欧美 国产综合体| 欧美亚洲系列| 国产丰满熟夫69mpp| 黑人美精品 A片| 91成人无码| 330dv亚洲成年视频网| 狠狠色噜噜狠狠狠狠狠色综合久久| 久久久久久久久国产| 黑丝少妇在线观看| 色综合尤物| 欧美日韩国产成人高清| 韩国轻伦国内自拍一区| 欧美性少妇| 日韩av三四区| 大香蕉伊利av| 99色悠悠| 99无码精品| 欧美强奸乱能| 亚洲性爱电影| 香蕉久久AⅤ...| 久久精品一区二区三区四区五区| 丝袜美腿丝袜| 夜夜做夜夜爽精品视频| 国产AB视频| 国产AV人人 夜夜人人澡| 蜜臀少妇一区二区| 久久久一级| 免费毛片在线播放| 天天爽天天| 国产又爽又黄| 国产超碰国产97| 狠狠中文字幕| 亚洲激情 欧美色图| 久久亚洲骚逼综合| 级品肉射| 久久久久极品| 欧美色图片| 亚洲国产另类在线中文| 国产精品不卡一区二区电影| 亚洲男人综合| 人人看人人插| AV网站高清无码在线观看| 看黄片视频免费| 人人妻人射| 狠色婷婷久久一区二区三区_| 一区二区三区激情在线观看| 插入综合网| 男人天堂站| 99抽插| 亚洲精品久久久久久| 亚洲天在线| 黄色免费一级在线毛片| 久久久久九九九| 丁香六月婷婷久久综合| 欧美色图 人妻| 国产馆| 久久透逼视频| 亚洲人成网www| 综合91网| 伊人久久综合影院精品久久久| 亚洲一卡2卡3卡4卡乱码网站| 婷婷91| 99re在线视频国产| 91福利网在线观看| 天天综合AV| 999九九九九国产动| 97无码视频在线播放| 911粉嫩人妻| 日日夜夜青青草母狗| 小电影欧美91| 高清国产av无码| 欧美 亚洲 91| 日韩乱伦影音先锋| 亚洲97p| 17c嫩草51久久91嫩草| 激情干在线| 国产午夜激片Av毛片不卡| 综合久草| 国产乱码久久久久久| 亚洲成a人v欧美综合天堂下载| 久久成人国产| 99精品无码| 天天干美少妇一区| 做爱A级亚欧| 中文字日本乱码| 91亚州| 男人的天堂啪啪啪啪啪蜜桃不卡| 成人性生活高清视频在线播放| www网站黄| 熟女露脸激情自拍视频| 每日更新AV| 熟女久久久| 亚洲中文一区二区三区视频| 一区二区视频在看| 国产污视频麻豆传媒一区二区| 九九九九精品| 亚洲图片 激情小说| 色呦呦呦在线观看视频| 91美女精品| 亚洲 欧美 天天| 无遮挡男女激烈动态图| 青青草成人视频在线观看二区| 久久久久亚洲AV无码专区少妇| 欧美色图91p| 国产成人自拍视频在线| 精品国产一区二区三区在线播出| 18禁久久| 农村妇女精品一区二区| 亚洲中文字幕av| 大香蕉免费3| 日天天九九天堂666| 国产AV人人夜夜澡人人爽麻豆| 伊人影院综合是一个与深夜成人在线| 亚洲欧美综合网| 97视频900| 激情五月综合网| 天天色黄色影院天天操| 啊啊啊想要| 男人天堂网手机版婷婷| 亚洲色图20p| 91精品国产麻豆国产自产在| 一级黄色视频网| 中英熟女操女| 超碰在线一区二区| 久久精品国产亚洲5555| 99热在线观看| 五月天我淫我色av| 97超碰人人模人人拍人人| 亚洲文学偷乱拍啪啪啪啪| 九九九九九九九九九九九免费国产| 26uuu国产成人综合| 99久久久无码国产精品性啊聊| 欧美日综合| 狠狠97| 操91| 精品国产乱码久久久久久网站入口| 五十路人妻在线| 国偷自 一区| 四虎在线观看网站| 欧洲亚洲人妻无码高清久久三区四区| 国产乱码久久久| 欧美 色 亚洲| 亚欧无码线免费观看视频| 成·人免费午夜在线观看| 亚洲一区二区性爱电影| 中文熟女五十乱码在线| 区二区亚洲婷| 风间由美日韩欧美久久| 绯色一区二区三区不卡少妇| 亚洲欧洲综合av在线| 把腿张开老子CAO烂你| 免费久久精品麻豆一区二区av| 精品性爱无码在线播放| 热天堂一区二区| 97干综合网| 91在线观看,天天综合| 中文字幕精品探花视频| 中文字幕一区二区在线日韩精品| 大香蕉啪啪网| 美国三级日本三级久久99| 精品十八在线观看| 成年人黄色视频免费| 日本国产欧美高清在线| 91亚洲不卡一区| 久久久久921| 亚洲 欧美 日韩 国产一区二区| 国产乱伦亚洲| 爽爽爽免费视频| 97色操| 国产AV激情无码久久无码| 99色在线| AV女资源| 日韩三级视频一区二区三区| 97天天插| 亚洲第一在线视频| 欧美日本视频一区| www.av在线观看| 亚州日韩97| 日欧操屄| 亚洲清纯唯美| 天天综合网站| 日韩av三四区| 美国日韩黄片| 欧美日韩国产电影| 国产精品原创巨作?v网站| 久久这里都是精品| 欧美极品美女aaaaaa级黄片| 日本午夜福利视频| 欧美1区二区三区公司 | www.狠狠| 白丝AV| 亚洲熟妇乱女区二区三区| 日日超碰亚洲| 欧美亚洲美少妇一区二区| 最新国产精品| 青青草大香蕉在线视频| 人摸人人操人| 青草综合| 亚洲日本天堂| 色色国产| 日韩欧美综合激情| 大逼色网站| 欧美制服网站美腿丝袜| 91人妻精华帖| 亚州综合色| 久久久久久久久久久久黄色| 免费毛片在线播放| www.99色| 2019天天干| 国产精品久久久九九九| 美女诱惑爱爱| 亚欧高清在线| 亚洲啪啪视频一区二区| 男人的天堂网页| 国产精品一二三| 国产精品情侣啪啪| 无码人妻1727| 亚洲各类熟们中文字幕| 国产精品自拍视频| 97在线观看视频| 夜夜国产一区| 国产综合久久久鬼色| 99碰碰| 国产网站在线播放| 浪人综合网| 家庭乱伦国产精品| 亚洲无码视频免费在线观看网址!| 亚洲性猛| 91夜夜蜜桃臀1区2区3区| 国产综合网站在线播放 | 中文区中文字幕免费看| 蜜桃午夜视频一区二区 | 日韩欧美午夜一区二区| 搡老熟女免费视频| www久久国产精品| 2024黄色视频| 天天色天天干天天爱| 国产 亚洲 一二三四| 97天天操| 国产精品99精品视频网站| 97超碰超碰| 丝袜亚洲综合| 超碰国产精品无码| 最新岛国大片| 一级A啪啪啪啪| 欧美日韩99| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 中文字幕123| 欧美午夜视频精品久久| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 97无码视频在线播放| 99最新日韩偷拍视频| 黄站在线免费观看| 亚州一区二区| 成人a大片在线观看| 亚洲aV性爱| 日韩有码一区三区| 97在线资源| 91一区二匹| 中文字幕一二区二三区人妻专区| 中文字幕狠狠玩| 亚洲天堂区| 91亚洲丝袜| 久久精品国产亚洲5555| 欧美亚洲另类在线蜜桃| 欧美精品在线观看| 91日韩网站| 久久精品国产亚洲AV高清演员表| 熟女乱伦二区| 久久后入制服| 凹凸久久人人| 加勒比海成人视频网| 玖玖久久久| 亚洲第一成人影院色播| 欧美暴力猛交| 黄片色区软件| 麻豆精品天美| 粉嫩av久久一区二区三区| 色婷婷久久| 欧美亚洲韩国视频十五区| 黑人精品XXX一区一二区| 久久女人一区二区三区| 亚91网| 乱色视频中文字幕| 9精品久久久久| 国产女性无套 免费观看| 色www精品视频在线观看| 思思热国产高清| 久久9精品视频| 亚洲美女30b| 91丝袜人妻| 日本三级一区二区 在线| 欧美三级一级| 久久久精品中文字幕爱豆| 天天综合~91入口| 97视频在线播放| 懂色综合久久久| 国产精品白丝在线播放| 偷拍在线观看视频| 手机看片1024你懂的国产| 亚洲色综网| 亚洲一区日韩| 翔田千里Av在线| 香港日本韩国人妇99www.wccm20| 最近2019中文字幕国语免费版| 操91| 欧美日韩资源在线| 日本3级一区二区免费| 麻豆成人影音在线| 色大香蕉97N| 久热91| 人人人摸人人| 色综合91好| 久偷拍欧美日韩三区| 色播综合| 欧美黄片欧美黄片xxx| 亚洲毛片久久| 亚洲色图伊人网| 啊啊啊啊啊操我视频| 最新中文字幕精品在线| 婷婷超| 欧美亚洲首页| 精品白丝一区| 经典丝袜一区| 日韩综合97P| 中文字幕片| 一二三四免费视频| 97免费在线视频在线观看| 青女在线| 99re在线观看| 五月丁香啪| 黑人操一区二区| 一区二区免费电影久久| 加勒比伊人| 久久久久久加勒比| 国产精品美女| 国产无码精品久久久久久| 97亚洲在线| 精品日日人妻| 91丨人妻丨国产丨丝袜| 9Ⅰ老熟女| 欧美97爱| 91福利网在线观看| 欧美精品一区二区少妇免费A片| 99精品人妻| 亚洲乱码精品一区二区| 懂色中文一区二区三区 | 青青草色情网站视频| 国产精品久久久久久久久久久久久久久久久久| 一区二区三区四区五区高清无码永久视频 | 被男人添B超爽视频| 国产精品久久久久无码A√| 国产成人无码啪| 在线视频日韩欧美国产| 亚洲色图91欧美日韩| 久久国产精品91| 久久久111| 极品出轨视频网站| 精品国产三级av韩国在线| 久久久99免费| 最新欧美色网| 美女让帅哥通她小鸡鸡| 欧美天天搞| 最新亚洲人成网站在线影院| 亚洲欧美激情在线视频| 香蕉久久精品| 九九九九亚洲| 中出后入| 亚洲成人精品在线一区| 色综合色欲色综合色综合色综合| 久久久久久九九九九-美女久久久久久久-成人AV | 国产吞精a级片激情电影| 五月天成人综合| 超碰在97| 日韩亚洲中文字幕在线| 午夜呻吟欧美| 中文字幕丰满人妻日本| 婷婷五月天成人| 日韩高清一二三| 日本乱人伦片中文三区| 久久a久久| 97av在线观看| 亚洲有薄码区日本系列中文字幕| 快播久久人人aV| 国产高清成人mv在线观看| 亚洲限制级| 成人蜜乳小视频网站| 97人妻色| 蜜乳视频网站| 加勒比人妻综合| 日本三级一区二区 在线| 好看的91视频| 污污汅18禁网站在线永久免费观看| 夫妻四区五区六区| 久久黄片国产一区二区| 亚熟hd视频在线| 日本三级A片网站com| 日欧美色| 亚洲国产一级精品毛一级精品看免费视频 | 蜜臀av中字字幕网站| 国产亚洲色婷婷久久99精品91 - 百度| 婷婷五月天网| 波多野42部激情无码喷潮| 国产丰满熟夫69mpp| 高清成年美女黄网站免费大全| 久九干| 国产乱码久久久久久| 国产偷拍自拍在线视频| 91狠狠综合久久| 欧美黑人猛交春色影视大全| 欧美十八禁视频| 天天干天天中出av| 91黑丝在线播放| 日本成人免费一区二区三区| 蜜臀av中文字幕| 99精品视频在线观看| 国产一区二区免费福利片| 亚欧美综合网。| 97视频网站在线观看| 热久久国产| 91精品老女人| 久久是精品| 成人精品视频一区二区| 日韩不卡a级视频专区| 96麻豆精品一区二区三区| 人妻久热在线| 欧美一级特黄淫片在线观看| 女人天堂网| 国产精品情侣啪啪| 最新日韩黄片| 免费啪啪一级视频| 影音先锋日本乱伦| 探花视频免费观看国产专区| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 97精品一区二区视频| 人妻另类| 农村少妇久久久久久久| 91精品国| 中文三一区| 亚洲区小说| 夜夜嗨免费视频| 97av,com| 97色操| 99在线精品观看视频中文 | 日韩国产乱子伦App| 大香蕉黄色一级片免费看| 精品国模无码| 亚洲免费在线探花| 天天操女人| 97欧美| 青青草中文字幕| 性做久久久久久免费观看软件| 操b在线观看| 亚洲精品国产日韩无码AV永久免 | 亚洲精品一区二区日本| gogogo免费高清看中国国语| 国产精品视频麻豆入口| 黄色AAAAAAAAAAA大片| 精品亚洲国产成人av网站| 国产伦乱91| 激情综合五月| 青青欧洲黑| 久久精品六区| 国产精品一区av在线| 一级啊性爱在线视频| 欧美99热| 色超碰综合| 老熟女阿 国产91| 高清国产精品福利网站| 网页导航五月天免费一二三区 | 日本天天吊| 久久久久国产| 国产又色又粗又黄又爽| 丁香五月婷婷五月| 伊人色综合欧美| 五月情色天| 国产美女高潮叫床视频| 欧美精品久久96人妻无码| 97碰碰色| 亚洲熟女中文字幕在线| 青草园大香蕉| 国产美女销魂在线观看不卡| 日本在线伊人啪啪| 亚洲日韩美女中文字幕乱| 5252色欧美在线| 97av在线观看| 情色AV电影| 久久久月天| 国产日本久久免费精品| 日韩精品大香蕉伊人在线| 日本不卡一区| 伊人久久大香线综合无码| 91丝袜| 国产精品久久99日日| 午夜a成v人电影| 青娱乐欧美激情一区二区| 97香焦色区| 五十路一区无码| 少妇超碰在线| 国产精品嫩草影院午夜两性| 熟啊v色欧美热| 国产精品探花色| 99色骚| 亚洲第一精品在线视频| 强奸乱伦麻豆| 色阁阁AV综合网| 久久激情视频| 青娱乐淫乱1314| 超碰夫妻97| 欧美久久伊人| 免费视频观看60秒| 后入内射蜜桃臀| а√天堂资源官网在线资源| 国内97干免费看| 日韩人妻一区二区精品| 张柏芝国产一区在线观看| 欧美色九九九| 久99| 操高情无码| 91网站18禁| 亚洲鸥美色图| 欧美亚洲影视| 女优视频第10页| 男女激情黄色网址| 亚洲黄片免费在线播放| 国产精品久久久亚洲第一牛牛_在线观看| 99热这里只有精| 黑人精品成人一区二区三区 | 婷婷精品国产欧美精品亚洲人人爽| 婷婷五月激情综合| 无码视频黄色网战| 免费日韩黄片| 老司机午夜精品视频| 91美| 91亚洲网站| 欧美日韩中文字幕不卡| 玖玖草久草99蜜月一区二区三区| 色综合中文字幕不卡| JULIA一区二区三区在线播放| 国产免费操逼| 熟妇的味道HD中文字幕| 国产91久久九九免费精品无码| 人妻爽爽啪视频| 丝袜美腿制服人妻二区中文字幕 | 综合色区偷拍| 日本精品免费一区二区三区四区| 黄色毛片A片| 1240青青草一区二区三区视频天爱| 亚洲丝袜二区| 国产极品美女高潮无套在线观看| 黄页网站成人免费| 久啪| 久久免费老司机精品| 久久超碰、| 在线无码操| 日韩av性爱在线播放| 精品妇操一区二区三区| 亚洲男人的天堂一区二区| 超碰在线观看av不卡| 麻豆天美传媒毛片| 天操天操夜操夜月操月年年操操| 中文字暮97| www99热| 亚洲古典另类欧美在线| 秋霞怕怕片| 欧美综色欧| 啊啊啊啊啊啊啊网址在线观看| 一区二区激情国产熟女| 五月丁香激情综合网| 黄片aaaaa一区| 色翁荡息又大又硬又粗又爽| 一级性爱网| 97资源久久| 欧美性爱超碰97| 国产精品伦理| 色爱亚洲| 男人亚洲天堂| 国产91 丝袜在线播放00-百度| 男人的天堂无码| 国产91丝袜在线播放蜜月| 中文一区在线日| 欧美日动态视频| 久久熟女久| 夜精品久无码| 亚洲 欧美 日韩另类 麻豆| 97精品在线| 久久久96精品| 999999精品| 51国产午夜精品视频| 欧洲亚洲国产综合在线| 亚洲一区日韩精品| 人人妻人人澡人人爽人人精品浪潮| 午夜无遮挡男女啪啪视频| 久久久久久久久9| 東南亚性呦成人伦理资源在线视频| 夜夜久久久| 男人天堂网站| 久操com| 五月丁香激情综合| 天天日少妇逼AV| SS久久| 91男人综合| 国产精品点击进入在线影院高清 | 人妻22p| 麻豆久久久久久久久丝袜| 久久久久9999精品九九九| 欧美线天码中字| 香蕉欧美| 婷婷五月成人| 少妇内射www在线观看视频 | 国产97/欧美| 国产无码三级视频在线观看| 日本熟女中文| 青女在线| 人人操人人摸人人骑| 亚洲无码久久久久久久| 女同性恋一区二区三区精品视频| KK色在线影院| 午夜AV人气不卡| 久九干| 久久久久九九九| 日韩中文字幕二区| 97操综合| 国产精品久久久久久片| 骚货人妻偷情自拍在线视频| 嗯嗯嗯啊啊在线观看| 久久精品国产亚洲AV嘿嘿| 欧美少妇第一页| 日韩性爱长视频免费| 麻豆人妻精品一区二区| 欧姜老司机| 屌逼麻豆| 精品高潮| 亚洲欧洲精品成人| 少妇厨房愉情理伦片bd在线观看| 久久精品人体| 国产又黄又爽| 亚洲淫色网中文| 亚洲AV无码乱码| 亚洲性少妇| 亚洲欧美国产成人综合不卡| 九色 蝌蚪 熟女自 | 99久久精品无码一区二区| 日本中文字幕一区| 天天综合有色网| 日本道日本道中文字幕日本道最新日本道在线观看 | 黑白配性爱AV成| 日产狠狠干| 男女啪啪啪18禁网站| 天天日天天操VV| 怡红院一区二区熟女人妻| 久9久9久9久9久9久9| 爽 好舒服 无码刺激久久| 一级AAA片一区二区三区| 国产后入精品| 日韩人妻制服丝袜av| 亚州精品人妻一二三区| 熟女啪啪视频| 久久精品国产亚洲AV无码电影| 亚洲Av诱惑| 久久av色| 中文字幕亚洲在线一区| 黄片视频观看| 久久久久久十| 国产精品久久久九九九| 亚州精人品大香蕉| 久热香蕉精品在线视频| 超碰九7免费| 久久 久久国内精品亚洲| 欧美少妇熟女| 丁香五月性| 91伊人久| 日韩啊V| 人妻丝袜日本| 日韩欧美蜜桃精品久久中文字幕久久| 嗯嗯嗯好爽| 国产色呦呦| 欧美人妻精品一区二区| AⅤ片水多多| 97在线视频免费| 日韩青久久| 2019午夜福利视频| 天天日日本| 狠狠躁AV| 爱爱动态120秒| 色婷婷电影网| 天天色综合天天操| 婷婷久久五月| 色五月激情网| 欧美有码激情视频一区二区三区| 国产成人精品日本视频| 亚州欧美综合| 亚洲第91页| 91男人天堂网| 超碰97资源网亚洲| 91综合站| 午夜福利一区二区影院| 国产91影院| 日本精品网站在线中文| 高潮毛片无遮挡高清免费| 岛国激情视频软件| 美女的肌被草喷水视频| 97电影院超碰| 韩国久久97| 色婷婷综合久久久久中文一区二区| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 久久精品中文字幕女同| 亚洲色图国产另类| 噜噜瑟| 免费精品无码一级毛片牛牛影视| 美国黄片aaa| 亚洲欧美国产成人综合不卡| 免费夜夜爱黄色视频毛片| 97综合在线观看| 色娱乐色呦呦夜夜夜夜av| 欲色啪| A级国产欧美激情在线| 国产色精品午夜大片| 激情久久久| 2000亚洲男人天堂| 欧美姓爱综合网| 国产黄色影片在线观看| 一区二区三区精品黑丝白丝酒店对鸡| 高清不卡国产| 91丰满| 中文字幕成人理论在线| 久久、1234| 射综合网| 超碰人人妻| 亚洲少妇自拍中文字幕懂色| 黄片qw| 野狼激情网| 三四中文字幕| 亚洲成人久久美女| 老鸭窝日丰县女人| 亚洲性爱免费电影| 中文字幕88av在线| 青娱乐休闲视频在线观看| 六月丁丁香| 91日韩网站| 大香网伊人久久综合| 中文字幕乱偷人妻久久艾草网| 国产亚洲色婷婷久久99精品91 - 百度| 欧美视频边做饭边橾| 亚洲素人网| 久久久精品视频免费观看| 欧美人妻色| 欧美人妻精品一区二区| 日本熟妇精品九九| 亚洲欧美日韩夜夜| 日本二区不卡| 久久亚洲影院一区二区| 久久人妻| 亚洲欧美国产中文字幕| 小视频玖玖| 国模少妇一区二区三区| 色香伊人| 大香蕉九九| 加勒比海色香蕉婷婷| 色综合中文字幕不卡| 欧美日韩午夜精品一区二区三区| 97干色天堂| 人人摸人人摸人人干| 亚洲影视高清三级-草1024榴社区入口-品爱AV| 91成人久久| 色97干| 91jk色拍| 色99色| 大黄片做爱的大的| 亚洲色图 91| 美腿丝袜高跟网免费视频免费视频| 中文字幕精品一区二区精| 欧美熟妇精品黑人巨大91| 夜夜高潮夜夜爽高清视频一 | 欧洲免费一区二| 91丨熟女丨丰满熟女| 欧美极品美女aaaaaa级黄片| 97热视频在线观看| 天天操狠狠日夜夜干超碰撸com视频在线观看 | 三级网站超变态精品| 天堂种子在线www网资源| 日韩性爱啪啪视频| 国产日韩美女小穴视频网站不卡| 久久精品国产99国产精品亚洲| 搡老熟女老女人老熟妇免费视频| 中日韩一区二区三区欧美| yazhououmeizongya| 久久久99999久网站| 日本免费不卡二区| av大香蕉| 丁香五月偷拍| 成人性爱电影网| 一区二区三区 日韩欧美| 欧美一区二区在线资源| 99精品在线观看| 九九人人操| 国内精品久久久久影院亚洲| 国产精品999zyz| 在线观看亚洲专区| 奇米狠999| 国产久久av| 国产精品自产拍在线观看社区| 黄色片,com| 欧亚乱色熟女一区二区| 亚洲第一黄色av网站 | 亚洲 日本 国产 综合| 五十路六十路七十路熟婆| 久久性生大片免费观看性| 欧美91在线| 亚洲国产精品99久久久| 高潮的A片激情扒开一区| 免费观看的黄色的网站| 国产亚洲色婷婷久久99精品91葵花宝典| 人干人人人操人人摸| 欧美网站免费| 狠狠操夜夜操蜜桃视频三区| 欧美91在线+|+欧美| 欧美成人性爱视频免费观看| 亚洲无码AV九九九| 天天天天操| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 久久久久斤小| 日本精品一区二区不卡| 热思思免费视频| 久久久久免费看少妇A片特黄| 成人网站 免费观看| 色色婷婷五月| 久久久久亚洲精品| 老熟女阿 国产91| 性暴力欧美猛交在线直播| 在线亚洲丝袜视频网站| 操人妻视频| 日韩 欧美 另类 人妻| 人人乐大香蕉| 中文字幕一二三av| 欧美性爱免费短视频| 亚洲18禁| 五月天久久人妻| 岛国网址国产| 国产原创精品| 人人妻人人澡人人爽久久av| 国产一区二区精品久久99| 日本三级小说中文字幕| 亚洲狠| 五月激情天| 99re在线视频这里只有精品| 国产特级毛片AAAAAA高潮流水 | 久久久久久久久久精| 偷拍 欧美 日韩| 男人的天堂啪啪啪啪啪蜜桃不卡| 天天干1区2区在线| 人人操人人操人人操人人操人人操人人人11.CM | 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 69视频入口| 嗯嗯啊啊啊好舒服| 欧美片第一页| 91网亚洲| WWW啪啪的com| 日韩人妻丝袜美腿中文| 人干人人人操人人摸| 91女优在线观看| 午夜福利免费精品视频| 91亚洲丝袜熟女| 99操碰| 国产又粗又大硬免费色网视频| 中文伊人大香蕉视频| 亚洲熟女乱色一区二区三区| 欧美大香蕉97| 粉嫩av在线一区二区| 亚洲美腿丝袜香蕉影视欧美成人| 91色婷婷综合久久中文字幕二区| 色乱二区| 蜜伊人色综合97| 日韩综合成人免费视频| 九九九九一级| 日本人体九九九九九九| AV一起草在线| 亚州,欧美在线| 顶级少妇BT天堂| 艹比视频国产精品| 少妇精品久久| 人妻大香蕉| 岛国小电影| 日本精品成人无码| 天天草天天日| 亚洲色婷婷综合久久一区二区三区| 91粉芽高清在线一区二区| 这里只有精品视频在线观看麻豆| 偷拍99| 黄色一区三区| 日日黄色三级网站| 麻豆国产尤物AV| 欧美麻豆成人同性GⅤ在线| 国产熟女无套内射| 伊人aaa| 国产人伦精品一区二区三区| 色丁香五月婷婷| 亚洲美女自拍偷拍视频| 国产精品蜜臀久久久久无码AV| 亚洲丝袜综合| 欧美刺激色黄片免费看| 欧美一区二区三区互相| 亚洲se91| 超碰九区| 中国特猛少妇色xxx| 久久有码视频| 狠狠操狠狠燥| 九九亚洲色在线观看| 亚州熟妇精品| 婷婷五月天无码 | 国产精品一区二区麻豆| 玖玖爱伊人玖玖爱| 欧美极品少妇| 偷窥自拍亚洲| 欧美一级黄片免费播放| 成片免费观看视频大全| 性爱1区| 懂色AV一区二区三区| 国产精品麻豆成人AV艾秋| 国产精品交换一区二区| 欧美综合自拍成人自拍第二十页| 欧美有码激情视频一区二区三区| 激情网五月天| 亚洲男人的天堂一区二区| 久久蜜色情在线视频xxx免费观看| 精爱久久| 四虎免费在线播放| 69精品| 日本一级婬片试看三分钟| 日本性爱少妇| 亚洲精品久| 九九九九九九九九九五码| 蜜桃网熟妇| 五月婷亚洲精品天堂| 人人 操人人 操人人| 在线人人人人人人精品超| 久久麻豆一区二区| 福利天堂| WWW.操逼.COM| 岛园激情| 啊啊啊97视频| 嗯嗯不要 视频| 黄色AAAAA欧美| 欧美日不卡| 精品女同一区| 日韩熟女操逼| 爆乳免费黄网站| 快播久久人人aV| 亚洲精品国产熟女久久久久久| 成人久久精品| 在线97在线| 中文字幕在线免费观看| 欧美激情中文字幕另类小说| 亚射在线| 国产精品人妻无码久久久老鸭窝| 欧美刺激色黄片免费看| 日韩午夜国产| 69XX一中文字幕人妻91| 婷婷五月天补不补| 久久精品28| 亚洲色综合| 久草电影网| 99热综合| 麻豆 美女 丝袜 人妻 中文| 日本午夜福利影院| 死我十八禁| 久久婷婷色| 96国产精品| 粉嫩国产精品久久粉嫩| 97色色色| 99国产精品在线观看| 亚洲中字幕日本一区二区三区| 91狠| www.亚洲黄色| 九九九九九精品十六| 天天操夜夜嗨| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 久久欧洲| jk白丝没脱就开始啪啪| 男女性扦B| 久久久夜夜嗨免费视频| 久久精品超碰| 嗯啊不要啊啊在线观看视频| 人人贴人人摸| 精品综合久久久久久97| 99无码精品| 熟女乱3伦999| 另类图片五月天| 中文字幕二区日韩天堂| 欧美精品一区二区少妇免费A片| 综合91网| 视频在线观看一二三区| 一区二区三区视频国产免费| 涩爱AV在线| 欧美在线干| 97精品熟女少妇一区 | 超碰在线免费一区二区三区| 伊人成人情色综合| 久久99视频| 久久这里是精品| 色婷婷一区二区三区久久| 午夜毛片高清免费不卡| 中文字幕高清20页视频| 韩国成人精品久久久免费看| 久久久久久久人妻丝袜| 九九九九九九视频| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | av2014 日韩在线中文字幕| 精产国品一区二三产品| 激情六月天| 色999;丁香五月| 国产69精品久久久久99尤物| 中文字幕久久婷婷丁香五月天| 深爱伊人影院| 91黄射| 人妻天天爽夜夜爽2| 伦在线97| 久日91在线| 97频视在线| 97超碰总站| 天天日熟妇| 亚洲久久东京热一二三四五区视频| 日日骚 av| 亚洲欧洲色情高清| 欧美午夜视频| 久色99999| 九久久精品| 激情文学亚洲| 国产sv美女内射| 亚洲97超碰| 插入逼91| 欧美性巨大╳╳╳╳╳高跟鞋| 国产亚洲色婷婷99精品91| 国产精选三级在线观看| 黄色大香焦1级‘′‘| 精品国产www久久| 成人在线视频网| 婷婷五月色| 青青草视频在线观看一区二区| 欧美性后入| 一区二区亚州激情久婷婷欧美| 天天影视之亚洲综合网| 农村少妇久久久久久久| 欧美精品精品一区二区| 岛国毛片手机在线观看| 91狠狠色丁香婷婷综合久久精品| 裸体美女免费看网站青草| 国产男女无套97| 综合网亚洲1| 少妇熟女1区2区3区| 国产精品婬乱一级毛片彝族| 日韩另类色图| 大香蕉青青9| 热99这里有精品综合久久| 少妇啪啪自拍| 超碰久久性爱| 亚洲日韩97| 久久riav中文精品| 男人的天堂啪啪| 亚洲熟女少妇免费视频| 欧美日韩在线视频网站| 色久综合| 91熟女少妇| 久久久久久久九九九九九九| 久久黄黄| 蜜屁av| 亚洲AV永久无码一区仙野| 亚洲色图a| 欧美精品二区视频在线| 欧美性爱五月天| 成人AV在线网站| 欧美强奸乱能| 97精品国产精品免费观看| 亚洲 欧美 精品专区 极品| 九九久久九九久久| 日韩三级av片| 日韩一级片| 超碰在线91| 人人爱操| 久久久久久性爱免费视频| 99热欧美| 亚洲欧洲激情卡通另类文学四射小说网站 | 欧美黄色图片| 日韩精品资源专区二区| 暖暖精品二区三区观看| 人人人干干人人干| 久久久国产精品人妻丝袜| 欧美极品美女aaaaaa级黄片| 日本不卡三级网在线播放| 少妇久久久久久| 人人综合| 久久精品国产亚洲AV片多多 | 亚洲国产一级精品毛一级精品看免费视频 | 亚欧韩av| 国产熟女无套内射| 精品大久久| 天天干干天天干干| 午夜精品久久久99热蜜桃的功能特点| 神马久久69| 欧美综合传媒| 色播五月丁香| 国产成人自拍视频视频| 亚州欧美综合| 嗯嗯嗯啊啊啊在线免费观看| 操b在线观看| 亚欧操逼片在线观看| 91 国产丝袜在线放观看| 日韩无码a片| 综合网 欧美| 天天综合网AV91| 91xingse| 无遮挡h肉动漫在线观看| 亚洲国产另类在线中文| 亚洲综合射| 嗯嗯啊啊啊好舒服| 日本午夜精品理论片A级APP发布| 久久久性| 亚洲色图欧美色18直播在线| 婷婷五月天无码| 啊啊啊com| 伊人成人中文字幕久久网| 手机在线视频国内精品| 日韩日本欧美在线观看| 日本熟妇人妻一区二区三区| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 91亚洲高清| 亚洲交换| 日本高清熟女久久一区| 久久欧洲| 97色97好| 男人的天堂在线2| 亚洲色图超碰在线| 中文字幕在线观看丝袜| 国产自偷自拍一区| 超碰成人最新最好看| 日本视频在线观看污污污| 色翁荡息又大又硬又粗又爽| 18禁无码永久免费无限制| 91色综合| 国产成人自拍视频视频| 国产二区三区免费视频| 亚洲春色一区二区三区| 色视频蜜乳| 国产一级特黄大片处女| 色成人Www精品永久观看| 婷婷丁香五月天综合东京热| 俺去俺来也在线www| 99操碰| 精品91摸| 麻豆一区在线| 果冻传媒A片一二三区| 另类老少妇| 欧美姓爱综合网| 国产资源中文字幕在线| 国产午夜福利电影免费在线观看| 中国少妇XXXX做受| 一本一道久久综合久久|