精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

我的RAG開源項目300+star了,十分適合新手入門(日志級詳細拆解)

人工智能
作者在 Github 上開源的一個 RAG 練手項目,總共解決了 22 個 issues。結合過去幾個月的項目實踐,我重新對項目做了輕量化重構,降低資源消耗與部署門檻。

三個月前,我在 Github 上開源的一個 RAG 練手項目,目前已經有了 327 個 star,總共解決了 22 個 issues。結合過去幾個月的項目實踐,我重新對項目做了輕量化重構,降低資源消耗與部署門檻。

圖片

項目地址:https://github.com/weiwill88/Local_Pdf_Chat_RAG

麻雀雖小,五臟俱全。總體來說,這是一個輕量級但組件完整的本地化 RAG 智能問答平臺。可以通過 Gradio Web UI 直觀體驗混合檢索、重排序、遞歸查詢及聯網搜索等高級 RAG 策略,更能從源碼層面學習和實踐 RAG 的完整流程與優化技巧。BTW,也支持 API 的調用方式.

圖片

這篇試圖說清楚,項目的各個核心組件構成,日志分段拆解含義,以及進階和擴展方向參考,歡迎感興趣的盆友基于此項目進行探索和貢獻。

以下,enjoy:

1、項目定位

在接觸如 Dify、RAGFlow 這類高度封裝的 RAG 框架之前,復現和二開這個項目,可以:

熟悉 RAG 核心組件:實際體驗文本加載、切分、向量化、向量存儲與檢索(本項目使用 FAISS)、LLM 集成等關鍵環節。

理解 RAG 基本流程:從底層腳本層面觀察數據如何在 RAG 系統中流轉和處理。

進行初步優化與測試:嘗試調整參數、替換模型、優化提示詞等,直觀感受不同策略對結果的影響。

掌握這些基礎后,能更有的放矢地使用高級 RAG 框架的 API 進行針對性調優或定制開發。

2、核心優化

這部分要介紹的項目輕量化改造,主要也是為了讓初學者盆友更好的抓住 RAG 的核心脈絡,避免過早陷入數據庫管理和配置的細節中。

當理解了核心流程后,再過渡到如 ChromaDB 或其他生產級向量數據庫,就能更好地理解這些數據庫所解決的問題和提供的價值。

2.1舊版依賴問題

在上一個版本的 issues 中,有挺多用戶反饋依賴安裝時間過久,幾個主要的“重量級”組件及其依賴項是導致安裝時間較長的主要原因:

圖片

torch 和 transformers

這兩個庫是 sentence-transformers 的核心依賴。sentence-transformers 用于生成文本嵌入(向量化)以及進行結果重排序(通過交叉編碼器)。torch 是一個龐大的深度學習框架,而 transformers 包含了許多預訓練模型和工具。這些是現代 NLP 和 RAG 系統的基石,因此體積較大。

onnxruntime

這是 chromadb 的一個依賴。chromadb 在內部可能使用 ONNX Runtime 來執行其默認的嵌入模型或其他優化計算,即使項目代碼中指定了使用 sentence-transformers 來生成嵌入。onnxruntime 本身是一個跨平臺的機器學習模型執行引擎,體積也不小。

Langchain

雖然原項目目前主要使用它的文本分割器 (RecursiveCharacterTextSplitter),但完整安裝 langchain 會引入不少間接依賴。

2.2輕量化改造

針對 Langchain 的優化

項目主要使用了 langchain 的文本分割功能,考慮到 langchain 已經將許多組件模塊化,所以可以僅安裝文本分割器模塊,并相應修改代碼中的導入語句。

針對向量數據庫

ChromaDB 雖然功能較為全面,但在某些場景下,尤其是對于本地運行和初學者而言,其依賴和服務可能相對“重”一些,會涉及到更多的后臺進程和磁盤空間占用。

FAISS-CPU 是一個專注于高效向量相似性搜索的 C++庫,Python 綁定通常更為輕量,依賴更少,尤其是在 CPU 版本下,不需要額外的數據庫服務運行,直接在內存中進行索引和搜索。這使得項目更容易在普通個人電腦上快速啟動和運行。

注:針對嵌入和重排序模型 (sentence-transformers, torch, transformers),這部分是 RAG 系統效果的核心,輕量化難度較大,且容易犧牲模型性能,所以暫時不做處理。

3、核心組件拆解

項目雖然經過了輕量化改造,但依然包含了構建一個完整 RAG 系統的所有核心組件。學習和理解下述組件的運作方式,對于入門 RAG 技術很重要。

圖片

3.1文檔加載與解析:

使用 pdfminer.six 從 PDF 文件中提取文本內容,理解如何從不同格式的非結構化數據源中提取原始文本,這是 RAG 流程的第一步。熟悉不同的解析庫及其優缺點,能為后續處理多種數據源打下基礎。

3.2文本切分:

使用 langchain_text_splitters (如 RecursiveCharacterTextSplitter) 將長文本分割成小的數據塊 (chunks)。理解文本切分對于 RAG 的重要性。合適的切分策略能確保每個數據塊既包含足夠的上下文,又不超過后續處理(如向量化模型輸入長度、LLM 上下文窗口)的限制。學習不同的切分方法(如按字符數、按句子、遞歸等)及其適用場景。

圖片

3.3文本向量化 :

使用 sentence-transformers 庫加載預訓練的句向量模型(如 moka-ai/m3e-base),將文本塊轉換為高維向量。這是 RAG 的核心之一。理解文本向量化的概念,即如何將語義信息編碼為計算機可以理解和比較的數字表示。

熟悉不同的向量化模型及其特點(如多語言支持、特定領域優化、向量維度等),并了解如何選擇合適的模型。

3.4向量存儲與索引 :

使用 faiss-cpu 構建向量索引 (IndexFlatL2),并在內存中存儲和管理這些向量及其與原始文本塊的關聯(通過我們自己維護的 faiss_contents_map, faiss_metadatas_map, faiss_id_order_for_index)。

理解向量數據庫/搜索引擎的基本原理,即如何高效地存儲大量向量,并根據查詢向量快速找到最相似的 K 個向量。通過 FAISS,可以直觀感受到索引構建、相似度計算(如 L2 距離)的過程。學習不同的索引策略對檢索效率和精度的影響。

3.5檢索:

語義檢索:用戶問題向量化后,在 FAISS 索引中執行 search 操作,獲取最相似的文本塊。

關鍵詞檢索:使用 rank_bm25 實現 BM25 算法,根據關鍵詞匹配度進行檢索。

混合檢索:結合語義檢索和 BM25 的結果,進行加權合并。

理解不同的檢索策略。語義檢索關注意義的相似性,關鍵詞檢索關注字面匹配。混合檢索則試圖結合兩者優點,提高召回率和相關性。學習如何評估和調整不同檢索策略的權重。

3.6上下文重排序:

使用 sentence-transformers 加載交叉編碼器 (CrossEncoder) 模型,對初步檢索到的上下文片段進行重新打分和排序,選出與問題最相關的片段。

理解在初步檢索后,如何進一步優化上下文的相關性。交叉編碼器通常比雙編碼器(用于向量化的模型)在相關性判斷上更精確,但計算量也更大,因此常用于對少量候選結果的精排。

3.7提示工程與大語言模型交互 :

構建合適的提示 (Prompt),將用戶問題和檢索到的相關上下文整合后,提交給大語言模型 (LLM)。通過 requests 與本地 Ollama 服務或云端 SiliconFlow API 進行交互,獲取 LLM 生成的答案。

遞歸檢索:利用 LLM 分析當前結果,判斷是否需要生成新的查詢以進行更深入的探索。

理解 LLM 在 RAG 中的核心作用——基于提供的上下文生成答案。學習如何設計有效的提示詞,以引導 LLM 更好地利用檢索到的信息。體驗與不同 LLM(本地/云端)集成的過程。遞歸檢索則展示了更高級的 RAG 模式,即如何讓 LLM 參與到信息檢索的迭代優化中。

3.8用戶界面:

使用 Gradio 構建交互式的 Web 界面。雖然不是 RAG 核心算法的一部分,但一個好的界面能極大地方便用戶與 RAG 系統交互、測試和調試。學習 Gradio 這類工具可以快速搭建原型。

4、運行日志拆解

下文會清晰地追蹤 RAG 系統處理問題的每一步,各位仔細閱讀下,有助于更好理解各組件的功能和協同方式。

4.1應用啟動與用戶界面初始化 (Gradio)

(venv) PS D:\Projects\Ongoing\開源項目\local_pdf+Chat_rag> python rag_demo_pro.py
Gradio version: 5.29.0
D:\Projects\Ongoing\開源項目\local_pdf+Chat_rag\rag_demo_pro.py:1703: UserWarning: You have not specified a value for the `type` parameter. Defaulting to the 'tuples' format for chatbot messages, but this is deprecated and will be removed in a future version of Gradio. Please set type='messages' instead, which uses openai-style dictionaries with 'role' and 'content' keys.
  chatbot = gr.Chatbot(
INFO:httpx:HTTP Request: GET https://api.gradio.app/pkg-version "HTTP/1.1 200 OK"
* Running on local URL:  http://0.0.0.0:17995
INFO:httpx:HTTP Request: GET http://localhost:17995/gradio_api/startup-events "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: HEAD http://localhost:17995/ "HTTP/1.1 200 OK"
* To create a public link, set `share=True` in `launch()`.

圖片

python rag_demo_pro.py: 這是啟動整個 RAG 應用的主命令。radio version: 5.29.0: 顯示了 Gradio 庫版本,它負責構建用戶交互界面。

UserWarning... chatbot = gr.Chatbot(...): Gradio 提示其聊天機器人組件參數 type 的未來變更。INFO:httpx:HTTP Request...: Gradio 啟動過程中的網絡請求,如檢查版本等。

Running on local URL: http://0.0.0.0:17995 : Gradio 服務成功啟動,用戶可通過此地址訪問 Web UI。

4.2數據初始化/清理

INFO:root:成功清理歷史FAISS數據和BM25索引

在處理新文檔前或應用啟動時,系統會清理舊的 FAISS 向量索引和 BM25 關鍵詞索引,確保基于當前文檔進行問答,避免數據混淆。

涉及組件:FAISS 索引管理、BM25 索引管理。

4.3文檔處理、向量化與 FAISS 索引構建

Batches: 100%|████████████████████████████████████████████████████████████| 1/1 [00:02<00:00,  2.71s/it]
INFO:root:FAISS索引構建完成,共索引 9 個文本塊

此階段包括了從 PDF 提取文本、將文本切分成小塊(chunks)、然后使用 sentence-transformers 模型(如 moka-ai/m3e-base)將這些文本塊批量轉換為向量。Batches: 100%...: 顯示文本塊向量化的進度。

INFO:root:FAISS 索引構建完成...: 表明所有文本塊的向量已成功存入 FAISS (IndexFlatL2) 索引。此處示例中,PDF 被處理成了 9 個文本塊。

涉及組件:pdfminer.six (PDF 解析)、langchain_text_splitters (文本切分)、sentence-transformers (向量化)、faiss-cpu (向量索引)。

4.4BM25 關鍵詞索引構建

Building prefix dict from the default dictionary ...
DEBUG:jieba:Building prefix dict from the default dictionary ...
Loading model from cache C:\Users\10440\AppData\Local\Temp\jieba.cache
DEBUG:jieba:Loading model from cache C:\Users\10440\AppData\Local\Temp\jieba.cache
Loading model cost 6.168 seconds.
DEBUG:jieba:Loading model cost 6.168 seconds.
Prefix dict has been built successfully.
DEBUG:jieba:Prefix dict has been built successfully.
INFO:root:BM25索引更新完成,共索引 9 個文檔

系統為相同的文本塊構建 BM25 關鍵詞索引,以支持后續的混合檢索。Building prefix dict...: jieba 分詞庫正在初始化并加載詞典,這是處理中文文本進行 BM25 計算的前提。

INFO:root:BM25 索引更新完成...: 表明針對這 9 個文本塊的 BM25 索引已創建。

涉及組件:rank_bm25 庫、jieba 分詞庫。

4.5用戶提問與遞歸檢索啟動 (第一輪)

INFO:root:遞歸檢索迭代 1/3,當前查詢: 發動機冒藍煙的故障原因分析

用戶通過 Gradio 界面輸入問題“發動機冒藍煙的故障原因分析”。系統啟動遞歸檢索流程,配置的最大迭代次數為 3,這是第一輪的開始。

涉及組件:Gradio UI、遞歸檢索控制邏輯。

4.6聯網搜索(可選,第一輪)

INFO:root:網絡搜索返回 5 條結果,這些結果不會被添加到FAISS索引中。

如果啟用了聯網搜索,系統會使用 SerpAPI 根據當前查詢從互聯網獲取實時信息。這些結果作為臨時上下文,當前版本不存入 FAISS。

涉及組件:SerpAPI 集成、requests 庫。

4.7查詢向量化 (第一輪)

Batches: 100%|████████████████████████████████████████████████████████████| 1/1 [00:00<00:00,  3.53it/s]

用戶的查詢(或其變體)被送入 sentence-transformers 模型轉換為查詢向量,用于在 FAISS 中進行語義相似度搜索。

涉及組件:sentence-transformers 模型。

4.8檢索結果重排序(第一輪)

Some weights of DistilBertForSequenceClassification were not initialized from the model checkpoint at sentence-transformers/distiluse-base-multilingual-cased-v2 and are newly initialized: ['classifier.bias', 'classifier.weight', 'pre_classifier.bias', 'pre_classifier.weight']
You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.
INFO:sentence_transformers.cross_encoder.CrossEncoder:Use pytorch device: cpu
INFO:root:交叉編碼器加載成功
Batches: 100%|████████████████████████████████████████████████████████████| 1/1 [00:07<00:00,  7.42s/it]

初步通過 FAISS 和 BM25 檢索到的候選文本塊,會由交叉編碼器 (CrossEncoder) 進行更精確的相關性打分和重排序。

Some weights...: Hugging Face Transformers 庫關于交叉編碼器底層模型部分權重新初始化的提示。INFO:...Use pytorch device: cpu: 交叉編碼器在 CPU 上運行。Batches: 100%...7.42s/it: 顯示重排序過程及其耗時。

涉及組件:sentence-transformers (CrossEncoder 模型)。

4.9LLM 交互:判斷是否需要遞歸查詢及生成新查詢 (第一輪后)

INFO:root:使用SiliconFlow API分析是否需要進一步查詢
INFO:root:生成新查詢: 新查詢(如果需要):
1. 渦輪增壓器故障是否會引起發動機冒藍煙?
2. 曲軸箱通風系統(PCV閥)故障如何導致燒機油?
3. 氣門油封老化與冒藍煙的具體關聯是什么?
4. 使用錯誤粘度的機油的燒機油風險有哪些?

圖片

系統將第一輪檢索的上下文及原始問題提交給大語言模型 (LLM,此處為 SiliconFlow API)。LLM 分析后判斷需要進一步探索,并生成了一系列更具體的新查詢點,以指導下一輪檢索。

涉及組件:LLM (SiliconFlow API/Ollama)、提示工程。

4.10遞歸檢索 (第二輪)

INFO:root:遞歸檢索迭代 2/3,當前查詢: 新查詢(如果需要):
1. 渦輪增壓器故障是否會引起發動機冒藍煙?
2. 曲軸箱通風系統(PCV閥)故障如何導致燒機油?
3. 氣門油封老化與冒藍煙的具體關聯是什么?
4. 使用錯誤粘度的機油的燒機油風險有哪些?
INFO:root:網絡搜索返回 5 條結果,這些結果不會被添加到FAISS索引中。
Batches: 100%|█████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 15.57it/s] 
Batches: 100%|█████████████████████████████████████████████████████████████████████████████| 1/1 [00:06<00:00,  6.47s/it]

系統進入第二輪遞歸檢索,使用 LLM 生成的新查詢。重復進行聯網搜索、查詢向量化、混合檢索(隱含)、重排序等步驟。

涉及組件:同第一輪的檢索、向量化、重排序組件。

4.11LLM 交互:再次判斷與生成新查詢 (第二輪后)

INFO:root:使用SiliconFlow API分析是否需要進一步查詢
INFO:root:生成新查詢: 新查詢:  
1. 活塞環磨損或斷裂如何導致發動機冒藍煙?
2. 氣門油封老化與燒機油的因果關系及檢測方法
3. 氣缸壁劃傷是否會引起過量機油進入燃燒室?
4. 高粘度與低粘度機油選擇錯誤對燒藍煙現象的具體影響差異
5. 廢氣再循環系統(EGR)故障是否可能間接引發燒機油問題?


理由:
- **角度擴展**:現有信息聚焦于PCV閥、渦輪增壓器和基礎油品問題(如低粘度),但未覆蓋活塞環/氣門油封等機械磨損核心因素。需補充機械結構失效的關聯分析。
- **技術細化**:針對已知的“粘度過低”提示,需明確不同粘度機油的適用場景與異常消耗閾值(如高溫剪切性能)。
- **系統關聯性**:EGR系統雖不直接涉及潤滑回路,但其堵塞可能導致異常燃燒壓力變化間接加劇竄油現象。

第二輪檢索后,再次調用 LLM。LLM 進一步分析并生成了更細化、更深入的新查詢及理由,展示了其分析和引導能力。

涉及組件:LLM (SiliconFlow API/Ollama)、提示工程。

4.12遞歸檢索 (第三輪 - 最后一輪)

INFO:root:遞歸檢索迭代 3/3,當前查詢: 新查詢:
1. 活塞環磨損或斷裂如何導致發動機冒藍煙?
2. 氣門油封老化與燒機油的因果關系及檢測方法
3. 氣缸壁劃傷是否會引起過量機油進入燃燒室?
4. 高粘度與低粘度機油選擇錯誤對燒藍煙現象的具體影響差異
5. 廢氣再循環系統(EGR)故障是否可能間接引發燒機油問題?


理由:
- **角度擴展**:現有信息聚焦于PCV閥、渦輪增壓器和基礎油品問題(如低粘度),但未覆蓋活塞環/氣門油封等機械磨損核心因素。需補充機械結構失效的關聯分析。
- **技術細化**:針對已知的“粘度過低”提示,需明確不同粘度機油的適用場景與異常消耗閾值(如高溫剪切性能)。
- **系統關聯性**:EGR系統雖不直接涉及潤滑回路,但其堵塞可能導致異常燃燒壓力變化間接加劇竄油現象。
INFO:root:網絡搜索返回 5 條結果,這些結果不會被添加到FAISS索引中。
Batches: 100%|█████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 11.48it/s] 
Batches: 100%|█████████████████████████████████████████████████████████████████████████████| 1/1 [00:04<00:00,  4.05s/it]

進入最后一輪遞歸檢索,重復之前輪次的步驟。在此輪結束后,系統會將所有收集到的、經過篩選的上下文信息,與原始問題一起,提交給 LLM 以生成最終答案(此部分日志未完全顯示)。

涉及組件:同前幾輪的檢索、向量化、重排序組件,以及最終的 LLM 答案生成。

5、進階與擴展方向

項目作為一個入門級的 RAG 實現,為后續的迭代和功能擴展提供了良好的基礎。以下是各位一些可以考慮的進階方向:

5.1更精細化的文本切分策略

當前的RecursiveCharacterTextSplitter是通用策略。可以研究并實現基于語義的切分(如使用模型判斷句子邊界或主題連貫性)、或針對特定文檔類型的結構化切分(如解析 Markdown 標題、表格等)。

5.2高級 FAISS 索引與管理

目前使用的是基礎的IndexFlatL2。可以嘗試更高級的 FAISS 索引類型,如IndexIVFPQ,以優化大規模數據下的檢索速度和內存占用。同時,研究如何更優雅地支持對 FAISS 中向量的刪除和更新(例如,使用IndexIDMap)。

5.3多元數據源接入

目前主要處理 PDF 和可選的網絡搜索。可以擴展支持導入其他格式的本地文檔(如.txt,.md,.docx),或者接入外部 API(如 Notion、Confluence 等知識庫)。

5.4查詢改寫與意圖識別:

在進行檢索前,使用 LLM 對用戶的原始查詢進行改寫(如糾錯、同義詞擴展、澄清模糊表述)或識別用戶真實意圖,可以提高檢索的精準度。

5.5上下文管理與壓縮

當檢索到的相關片段過多,超出 LLM 的上下文窗口限制時,需要有效的上下文壓縮策略(如篩選最重要片段、總結次要片段)來保證信息質量。

5.6更復雜的重排序模型/策略

除了當前的交叉編碼器和基于 LLM 打分,可以嘗試集成更先進的重排序模型,或實現多階段重排序策略。

5.7答案生成效果評估與追溯:

引入簡單的評估機制(如用戶反饋、答案與來源的相似度計算)和更清晰的答案來源追溯展示,幫助分析和改進系統表現。

6、寫在最后

Anyway,動手實踐的手搓方式來理解底層機制,是為后續深入學習和使用更高級框架的重要鋪墊。

責任編輯:龐桂玉 來源: 韋東東
相關推薦

2022-04-16 21:20:59

HTTPieStarGitHub

2013-12-24 10:04:01

PostgreSQL

2011-02-21 17:51:39

Zimbra入門新手

2011-04-01 10:18:22

NoSQLCouchDB

2011-03-22 11:06:52

Nagios安裝

2011-05-31 16:47:47

SEO

2011-01-10 14:36:00

新手linux基礎

2010-09-09 13:40:19

XML DOM

2010-06-23 15:00:50

Fix協議

2020-11-09 14:26:30

GitHub 技術開源

2023-12-08 13:19:00

前端Reactour流行庫

2020-12-17 06:48:21

SQLkafkaMySQL

2009-11-27 15:31:10

Cisco路由器日志

2010-05-28 18:22:51

MySQL基本操作

2009-04-07 09:12:35

敏捷新手入門大型開發

2022-06-16 07:31:41

Web組件封裝HTML 標簽

2012-07-10 01:22:32

PythonPython教程

2010-05-14 18:31:17

MySQL 定時數據備

2010-06-10 10:31:36

MySQL出錯代碼列表

2010-05-17 09:52:55

虛擬化VMware Play
點贊
收藏

51CTO技術棧公眾號

99视频在线精品国自产拍免费观看| 成人免费看黄| 国产精品亚洲专一区二区三区 | 欧美大黑帍在线播放| 国产av一区二区三区精品| 欧美激情第10页| 精品久久人人做人人爱| 人妻夜夜添夜夜无码av| 你懂的视频在线观看| 日韩不卡一区二区| 精品视频在线观看日韩| 亚洲乱码国产一区三区| 粗大黑人巨茎大战欧美成人| 国产69精品久久久久毛片| 91av在线播放视频| 超薄肉色丝袜一二三| 四虎国产精品免费久久5151| 亚洲精品国产品国语在线app| 高清av免费一区中文字幕| 国内偷拍精品视频| 国产成人免费视频网站视频社区 | 粉嫩av亚洲一区二区图片| 国产成人+综合亚洲+天堂| 亚洲色婷婷一区二区三区| 红桃成人av在线播放| 亚洲福利视频久久| 午夜免费福利网站| 99久久综合国产精品二区| 五月激情六月综合| avav在线播放| 黄色网址在线免费播放| 国产色91在线| 九九九热999| www.欧美国产| 国产一区二区调教| 国产精自产拍久久久久久蜜| 国产在线观看黄色| 黄色亚洲精品| 欧美剧在线观看| 美国精品一区二区| 欧美精品一二| 亚洲图片在线综合| 少妇大叫太粗太大爽一区二区| 在线精品国产亚洲| 日韩亚洲欧美综合| 日本中文字幕在线不卡| 国产一精品一av一免费爽爽| 欧美精品视频www在线观看| 无遮挡又爽又刺激的视频| 自拍在线观看| 精品久久久久久久大神国产| 欧美成人高潮一二区在线看| caoporn-草棚在线视频最| 亚洲精品综合在线| 国产精品一二三在线观看| 超碰最新在线| 亚洲人成影院在线观看| 一级全黄肉体裸体全过程| 欧美日本高清| 亚洲精品五月天| 国产精品国三级国产av| 第一中文字幕在线| 欧美日韩国产色| 日韩在线xxx| 欧美性理论片在线观看片免费| 在线视频国内一区二区| 天堂在线资源视频| 日日夜夜综合| 日韩欧美一区在线| 亚洲一区二区三区黄色| 欧美黑白配在线| 亚洲精品自在久久| 欧美日韩生活片| 久久久久久久久久久妇女| 欧美大成色www永久网站婷| 日韩一级片av| 国产精品一区毛片| 国产成人福利网站| 亚洲图片中文字幕| 国产高清无密码一区二区三区| 丁香婷婷久久久综合精品国产| 性xxxx视频| 中文字幕乱码亚洲精品一区| 9l视频自拍9l视频自拍| 久草在线新免费首页资源站| 色欲综合视频天天天| 中文字幕66页| 豆花视频一区二区| 夜夜嗨av色综合久久久综合网| 久久久久久久久久97| 亚洲第一在线| 国产精品嫩草视频| 亚洲国产999| 久久精品日韩一区二区三区| 黑人巨大国产9丨视频| 性欧美18xxxhd| 欧美无砖专区一中文字| 人妻换人妻a片爽麻豆| 精品国产中文字幕第一页| 欧美日韩国产123| 国产午夜麻豆影院在线观看| 国产成人亚洲综合a∨猫咪| 久久青青草综合| 精品孕妇一区二区三区| 欧美日韩中国免费专区在线看| 久久久久久久久久一区| 色吊丝一区二区| 久久天堂电影网| 中文字幕第四页| 国产精品中文字幕日韩精品 | 九一在线视频| 亚洲自拍偷拍欧美| 自拍偷拍一区二区三区四区| 久久黄色影视| 久久99视频免费| 一级片视频网站| 91玉足脚交白嫩脚丫在线播放| 宅男在线精品国产免费观看| videos性欧美另类高清| 欧美成va人片在线观看| 制服丨自拍丨欧美丨动漫丨| 免费欧美在线| 国产精品.com| 成码无人av片在线观看网站| 欧美在线短视频| 一本色道综合久久欧美日韩精品| 亚洲最大黄网| 国产精品中文久久久久久久| 久草福利在线| 天天做天天摸天天爽国产一区| 成人免费黄色av| 日韩精品一区二区三区免费观影| 奇米成人av国产一区二区三区| 好吊色一区二区| 一区二区激情小说| 日本精品一区在线| 国产精品久久久久无码av| 国产精品久久久久久五月尺| 黄色小视频在线免费观看| 欧美日韩国产综合视频在线观看中文 | av蜜臀在线| 精品国产sm最大网站| 日日噜噜夜夜狠狠久久波多野| 麻豆专区一区二区三区四区五区| 狼狼综合久久久久综合网| 九色porny视频在线观看| 精品国产污网站| 国产在线一二区| 成人一道本在线| 亚洲精品蜜桃久久久久久| av成人综合| 久久人人爽人人爽人人片av高请| 成 人 免费 黄 色| 亚洲在线一区二区三区| 亚洲美女高潮久久久| 精品动漫3d一区二区三区免费| 国产不卡一区二区三区在线观看| 久久五月精品中文字幕| 亚洲国产私拍精品国模在线观看| 日韩无码精品一区二区三区| 91一区二区在线观看| 最近免费中文字幕中文高清百度| 欧美爱爱网站| 国产精品久久久久久久久久尿| 91亚洲精选| 日韩一区二区三区四区| 日韩免费一二三区| www国产精品av| 污污动漫在线观看| 亚洲欧洲美洲一区二区三区| 成人高清在线观看| 中文在线最新版地址| 国产亚洲欧洲高清| 国产一区二区自拍视频| 一级特黄大欧美久久久| 亚洲精品乱码久久久久久不卡| 爽好多水快深点欧美视频| 中文字幕中文字幕在线中一区高清 | 精品国产乱码久久久久软件| 国产一区二区三区朝在线观看| 日韩在线视频一区| 亚洲欧美激情在线观看| 色视频成人在线观看免| 国产精品成人69xxx免费视频| 国产成人免费视频一区| 免费大片在线观看| 欧美久久影院| 欧美午夜欧美| 色妞ww精品视频7777| 日本精品免费一区二区三区| 免费在线观看av片| 亚洲国产免费av| 亚洲视频一区二区三区四区| 亚洲国产视频在线| 亚洲第一综合网| 成人在线综合网| 亚洲免费999| 夜夜嗨一区二区| 四虎永久免费网站| 深爱激情久久| 国产精品推荐精品| 国产精品原创视频| 91成人性视频| 性欧美videoshd高清| 亚洲欧美制服第一页| www国产在线| 欧美日韩一区三区| 麻豆久久久久久久久久| 亚洲欧美国产77777| 一级片视频免费看| 成人毛片老司机大片| 香蕉视频999| 日韩精品一级二级| 青青青免费在线| 欧美91视频| 天天做天天爱天天高潮| 欧美天天综合| 欧美日韩一区二区三区在线观看免 | 亚洲欧洲日本mm| avove在线观看| 三级电影一区| 亚洲国产午夜伦理片大全在线观看网站 | 亚洲日韩中文字幕| 欧美亚洲精品在线观看| 欧美一级午夜免费电影| 中文字幕码精品视频网站| 精品久久香蕉国产线看观看gif| 久久久精品视频在线| 亚洲欧美日本韩国| 91n在线视频| 国产精品色在线| www.日本高清视频| 日本一区二区三区高清不卡| 中文字幕av网址| 91小视频在线免费看| 国产人妻黑人一区二区三区| 丁香婷婷综合色啪| 亚洲AV成人精品| 国产东北露脸精品视频| 天堂网成人在线| 国产精品69毛片高清亚洲| 伊人免费视频二| 精品影院一区二区久久久| 五月天亚洲视频| 免费观看日韩av| 欧美一级xxxx| 国产在线国偷精品产拍免费yy| 日韩av片专区| 国产激情一区二区三区桃花岛亚洲| 午夜一级免费视频| 国产乱色国产精品免费视频| xxxx国产视频| 成人91在线观看| 久久精品成人av| 国产精品久久毛片| 国产1区2区3区4区| 亚洲一区电影777| 日日夜夜综合网| 日本高清不卡视频| 亚洲天堂网在线观看视频| 日韩一区二区免费视频| 六月婷婷综合网| 亚洲精品97久久| 国产黄色免费在线观看| 精品国产一区二区三区在线观看 | 欧美日韩四区| 国产精彩视频一区二区| 香蕉久久夜色精品国产| 中文字幕在线观看第三页| 久久精品国产亚洲高清剧情介绍| 激情图片中文字幕| 成人免费毛片a| 午夜理伦三级做爰电影| 综合欧美一区二区三区| 日本一二三区不卡| 在线中文字幕不卡| a视频免费在线观看| 亚洲国产一区自拍| 成年女人的天堂在线| 久久久黄色av| 麻豆免费在线| 国产裸体写真av一区二区| 99久久人爽人人添人人澡| 欧美日本亚洲| 99热国内精品| 一区二区传媒有限公司| 青青青伊人色综合久久| 扒开伸进免费视频| 欧美—级在线免费片| 欧美黑人精品一区二区不卡| 欧美视频一二三| 99国产精品一区二区三区| 日韩精品视频在线观看网址| 欧美一区二区三区| 韩国国内大量揄拍精品视频| 日韩欧美三区| 久久久久天天天天| 中文字幕日韩一区二区不卡| 一区二区传媒有限公司| 国产美女娇喘av呻吟久久| 少妇久久久久久久久久| 亚洲午夜免费电影| 在线观看中文字幕网站| 日韩精品视频在线观看免费| aaa大片在线观看| 国产精品福利小视频| 老司机精品视频在线播放| 黄色免费高清视频| 日韩激情av在线| 人妻丰满熟妇aⅴ无码| 亚洲在线免费播放| 中国一级片黄色一级片黄| 日韩经典一区二区三区| 美洲精品一卡2卡三卡4卡四卡| 国产乱人伦真实精品视频| 伊人久久综合影院| 欧美精品久久久久久久自慰| 激情综合色丁香一区二区| 亚洲精品午夜视频| 午夜精品久久久久久| 精品人妻一区二区三区三区四区 | 毛片在线网址| 成人午夜在线观看| 日韩aaaa| 三级a在线观看| 久久精品日韩一区二区三区| xxxx.国产| 亚洲精品国产综合区久久久久久久 | 丁香一区二区| 日本高清视频免费在线观看| 精品一区二区在线视频| 中国女人特级毛片| 日韩欧美一区二区三区| 午夜国产在线视频| 欧美极品欧美精品欧美视频| 欧美片网站免费| 欧美少妇一级片| 久久91精品国产91久久小草| a资源在线观看| 欧美色精品在线视频| av黄色在线观看| 国产精品青草久久久久福利99| 国产亚洲一区| 黄色免费网址大全| 国产精品午夜在线| 亚洲熟女乱色一区二区三区久久久 | 欧洲精品一区二区| 国产在线观看黄| 国产精品wwww| 色偷偷综合网| 肉色超薄丝袜脚交| 亚洲一区影音先锋| 欧美在线 | 亚洲| 97视频在线观看网址| 丝袜久久网站| 999精品视频在线| 亚洲欧美日韩中文播放| 成人av无码一区二区三区| 欧美激情国产日韩精品一区18| 精品国产影院| 不卡影院一区二区| 国产精品久久久久一区二区三区 | 91视频免费网址| 亚洲一区二区精品| 国产精品99久久免费| 亚洲色欲久久久综合网东京热| 不卡一区在线观看| 五月天婷婷导航| 精品国产依人香蕉在线精品| 久久伦理中文字幕| 男人用嘴添女人下身免费视频| 久久亚洲二区三区| 亚洲一区二区激情| 久久69精品久久久久久久电影好 | 亚洲精品国偷自产在线99热| 欧美xxxxxx| 欧美xxxx吸乳| 久久网站热最新地址| 亚洲图片中文字幕| 久久久久久久久综合| 精品产国自在拍| 亚洲一区和二区| 欧美亚洲高清一区二区三区不卡| 成人影院在线观看| 极品校花啪啪激情久久| 日韩成人一级片| 激情五月婷婷在线| 亚洲一区二区福利| 最新国产一区二区| 91视频免费版污| 亚洲mv在线观看| 毛片激情在线观看| 久久亚洲高清| 国产一区二区精品久久99| 在线视频一区二区三区四区| 久久精品99久久久香蕉| 天天久久夜夜| 91精品国产高清91久久久久久| 在线看国产一区二区| xxxx视频在线|