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

利用Milvus向量數據庫,帶你實現GraphRAG 原創

發布于 2024-12-4 09:02
瀏覽
0收藏

教你如何結合Milvus向量數據庫實現GraphRAG技術。

GraphRAG技術借助知識圖譜,給RAG應用注入了新的動力,使其能夠在海量數據中精確檢索所需信息。本文將帶你了解GraphRAG的實現方法,包括如何創建索引以及如何利用Milvus向量數據庫進行查詢,助你在信息檢索的道路上事半功倍。

1、先決條件

在運行本文中的代碼之前,請確保已安裝以下依賴項:

pip install --upgrade pymilvus
pip install git+https://github.com/zc277584121/graphrag.git

注意:通過一個分支倉庫來安裝GraphRAG,這是因為Milvus的存儲功能在本文編寫時還未被官方正式合并。

2、數據準備

為了進行GraphRAG索引,我們需要準備一個小型文本文件。我們將從Gutenberg項目(https://www.gutenberg.org/)下載一個大約一千行的文本文件,這個文件包含了關于達芬奇的故事。

利用這個數據集,構建一個涉及達芬奇所有關系的知識圖譜索引,并使用Milvus向量數據庫來檢索相關知識,以便回答相關問題。

以下是Python代碼,用于下載文本文件并進行初步處理:

import nest_asyncio
nest_asyncio.apply()

import os
import urllib.request

index_root = os.path.join(os.getcwd(), 'graphrag_index')
os.makedirs(os.path.join(index_root, 'input'), exist_ok=True)
url = "https://www.gutenberg.org/cache/epub/7785/pg7785.txt"
file_path = os.path.join(index_root, 'input', 'davinci.txt')
urllib.request.urlretrieve(url, file_path)
with open(file_path, 'r+', encoding='utf-8') as file:
    # 使用文本文件的前934行,因為后面的行與本例無關。
    # 如果想節省API密鑰成本,可以截斷文本文件以減小大小。
    lines = file.readlines()
    file.seek(0)
    file.writelines(lines[:934])  # 如果想節省API密鑰成本,可以減少這個數字。
    file.truncate()

3、初始化工作空間

現在,使用GraphRAG對文本文件進行索引。首先運行??graphrag.index --init??命令初始化工作空間。

python -m graphrag.index --init --root ./graphrag_index

4、配置環境變量文件

在索引的根目錄下,能找到一個名為??.env??的文件。要啟用這個文件,請將你的OpenAI API密鑰添加進去。

注意事項:

  • 本例將使用OpenAI模型作為一部分,請準備好你的API密鑰。
  • GraphRAG索引的成本相對較高,因為它需要用LLM處理整個文本語料庫。運行這個演示可能會花費一些資金。為了節省成本,你可以考慮將文本文件縮減尺寸。

5、執行索引流程

運行索引需要一些時間,請耐心等待。執行完畢后,你可以在??./graphrag_index/output/<timestamp>/??路徑下找到一個新創建的文件夾,里面包含了多個parquet格式的文件。

執行以下命令開始索引過程:

python -m graphrag.index --root ./graphrag_index

6、使用Milvus向量數據庫進行查詢

在查詢階段,我們使用Milvus來存儲GraphRAG本地搜索中實體描述的向量嵌入。

這種方法將知識圖譜的結構化數據與輸入文檔的非結構化數據相結合,為LLM提供了額外的相關實體信息,從而能夠得出更準確的答案。

import os

import pandas as pd
import tiktoken
from graphrag.query.context_builder.entity_extraction import EntityVectorStoreKey
from graphrag.query.indexer_adapters import (
    # read_indexer_covariates,
    read_indexer_entities,
    read_indexer_relationships,
    read_indexer_reports,
    read_indexer_text_units,
)
from graphrag.query.input.loaders.dfs import (
    store_entity_semantic_embeddings,
)
from graphrag.query.llm.oai.chat_openai import ChatOpenAI
from graphrag.query.llm.oai.embedding import OpenAIEmbedding
from graphrag.query.llm.oai.typing import OpenaiApiType
from graphrag.query.question_gen.local_gen import LocalQuestionGen
from graphrag.query.structured_search.local_search.mixed_context import (
    LocalSearchMixedContext,
)
from graphrag.query.structured_search.local_search.search import LocalSearch
from graphrag.vector_stores import MilvusVectorStore

output_dir = os.path.join(index_root, "output")
subdirs = [os.path.join(output_dir, d) for d in os.listdir(output_dir)]
latest_subdir = max(subdirs, key=os.path.getmtime)  # 獲取最新的輸出目錄
INPUT_DIR = os.path.join(latest_subdir, "artifacts")

COMMUNITY_REPORT_TABLE = "create_final_community_reports"
ENTITY_TABLE = "create_final_nodes"
ENTITY_EMBEDDING_TABLE = "create_final_entities"
RELATIONSHIP_TABLE = "create_final_relationships"
COVARIATE_TABLE = "create_final_covariates"
TEXT_UNIT_TABLE = "create_final_text_units"
COMMUNITY_LEVEL = 2

7、從索引過程中加載數據

在索引過程中,會生成幾個parquet文件。我們將其加載到內存中,并將實體描述信息存儲在Milvus向量數據庫中。

讀取實體:

# 讀取節點表以獲取社區和度量數據
entity_df = pd.read_parquet(f"{INPUT_DIR}/{ENTITY_TABLE}.parquet")
entity_embedding_df = pd.read_parquet(f"{INPUT_DIR}/{ENTITY_EMBEDDING_TABLE}.parquet")

entities = read_indexer_entities(entity_df, entity_embedding_df, COMMUNITY_LEVEL)
description_embedding_store = MilvusVectorStore(
    collection_name="entity_description_embeddings",
)
# description_embedding_store.connect(uri="http://localhost:19530") # 用于Milvus docker服務
description_embedding_store.connect(uri="./milvus.db") # For Milvus Lite
entity_description_embeddings = store_entity_semantic_embeddings(
    entities=entities, vectorstore=description_embedding_store
)
print(f"實體數量:{len(entity_df)}")
entity_df.head()

實體數量:651

利用Milvus向量數據庫,帶你實現GraphRAG-AI.x社區

利用Milvus向量數據庫,帶你實現GraphRAG-AI.x社區圖片

讀取關系

relationship_df = pd.read_parquet(f"{INPUT_DIR}/{RELATIONSHIP_TABLE}.parquet")
relationships = read_indexer_relationships(relationship_df)

print(f"關系數量: {len(relationship_df)}")
relationship_df.head()

關系數量:290

利用Milvus向量數據庫,帶你實現GraphRAG-AI.x社區

讀取社區報告

report_df = pd.read_parquet(f"{INPUT_DIR}/{COMMUNITY_REPORT_TABLE}.parquet")
reports = read_indexer_reports(report_df, entity_df, COMMUNITY_LEVEL)

print(f"報告記錄:{len(report_df)}")
report_df.head()

報告記錄:45

利用Milvus向量數據庫,帶你實現GraphRAG-AI.x社區

讀取文本單元

text_unit_df = pd.read_parquet(f"{INPUT_DIR}/{TEXT_UNIT_TABLE}.parquet")
text_units = read_indexer_text_units(text_unit_df)

print(f"文本單元記錄:{len(text_unit_df)}")
text_unit_df.head()

文本單元記錄:51

利用Milvus向量數據庫,帶你實現GraphRAG-AI.x社區

8、構建本地搜索引擎

一切準備就緒,現在已經有了本地搜索引擎所需的所有數據。接下來,我們可以利用這些數據,配合一個大型語言模型(LLM)和一個嵌入模型,來構建一個??LocalSearch??實例,為搜索任務提供強大的支持。

api_key = os.environ["OPENAI_API_KEY"]  # 你的OpenAI API密鑰
llm_model = "gpt-4o"  # 或 gpt-4-turbo-preview
embedding_model = "text-embedding-3-small"

llm = ChatOpenAI(
    api_key=api_key,
    model=llm_model,
    api_type=OpenaiApiType.OpenAI,
    max_retries=20,
)
token_encoder = tiktoken.get_encoding("cl100k_base")
text_embedder = OpenAIEmbedding(
    api_key=api_key,
    api_base=None,
    api_type=OpenaiApiType.OpenAI,
    model=embedding_model,
    deployment_name=embedding_model,
    max_retries=20,
)

context_builder = LocalSearchMixedContext(
    community_reports=reports,
    text_units=text_units,
    entities=entities,
    relatinotallow=relationships,
    covariates=None, #covariates,#todo
    entity_text_embeddings=description_embedding_store,
    embedding_vectorstore_key=EntityVectorStoreKey.ID,  # 如果向量存儲使用實體標題作為ID,則將此設置為EntityVectorStoreKey.TITLE
    text_embedder=text_embedder,
    token_encoder=token_encoder,
)

local_context_params = {
    "text_unit_prop": 0.5,
    "community_prop": 0.1,
    "conversation_history_max_turns": 5,
    "conversation_history_user_turns_only": True,
    "top_k_mapped_entities": 10,
    "top_k_relationships": 10,
    "include_entity_rank": True,
    "include_relationship_weight": True,
    "include_community_rank": False,
    "return_candidate_context": False,
    "embedding_vectorstore_key": EntityVectorStoreKey.ID,  # 如果向量存儲使用實體標題作為ID,則將此設置為EntityVectorStoreKey.TITLE
    "max_tokens": 12
_000,  # 根據你的模型的令牌限制更改此設置(如果你使用的是8k限制的模型,一個好設置可能是5000)
}

llm_params = {
    "max_tokens": 2_000,  # 根據你的模型的令牌限制更改此設置(如果你使用的是8k限制的模型,一個好設置可能是1000=1500)
    "temperature": 0.0,
}

search_engine = LocalSearch(
    llm=llm,
    context_builder=context_builder,
    token_encoder=token_encoder,
    llm_params=llm_params,
    context_builder_params=local_context_params,
    response_type="multiple paragraphs",  # 描述響應類型和格式的自由形式文本,可以是任何內容,例如優先列表、單段、多段、多頁報告
)

9、進行查詢

result = await search_engine.asearch("Tell me about Leonardo Da Vinci")
print(result.response)

# 萊昂納多·達·芬奇
萊昂納多·達·芬奇,1452年出生于佛羅倫薩附近的文奇鎮,被廣泛譽為意大利文藝復興時期最多才多藝的天才之一。他的全名是萊昂納多·迪·塞爾·皮耶羅·達·安東尼奧·迪·塞爾·皮耶羅·迪·塞爾·圭多·達·芬奇,他是塞爾·皮耶羅的非婚生和長子,塞爾·皮耶羅是一位鄉村公證人[數據:實體(0]。萊昂納多的貢獻涵蓋了藝術、科學、工程和哲學等多個領域,他被譽為基督教時代最萬能的天才[數據:實體(8]。

## 早期生活和訓練
萊昂納多早期的才華得到了他父親的認可,他父親將他的一些畫作帶給了安德烈亞·德爾·維羅基奧,一位著名的藝術家和雕塑家。維羅基奧對萊昂納多的才華印象深刻,于1469-1470年左右接受了他進入自己的工作室。在這里,萊昂納多遇到了包括博蒂切利和洛倫佐·迪·克雷迪在內的其他著名藝術家[數據:來源(6, 7]。到1472年,萊昂納多被佛羅倫薩畫家行會錄取,標志著他職業生涯的開始[數據:來源(7)]。

## 藝術杰作
萊昂納多或許以他的標志性畫作最為人所知,如《蒙娜麗莎》和《最后的晚餐》。《蒙娜麗莎》以其微妙的表情和詳細的背景而聞名,現藏于盧浮宮,仍然是世界上最著名的藝術品之一[數據:關系(0, 45]。《最后的晚餐》是一幅壁畫,描繪了耶穌宣布他的一個門徒將背叛他的那一刻,位于米蘭圣瑪利亞·格拉齊教堂的餐廳[數據:來源(2]。其他重要作品包括《巖間圣母》和他大約在1489-1490年開始的《繪畫論》[數據:關系(7, 12]。

## 科學和工程貢獻
萊昂納多的天才超越了藝術,延伸到各種科學和工程事業。他在解剖學、光學和水力學方面做出了重要觀察,他的筆記本里充滿了預示許多現代發明的草圖和想法。例如,他預示了哥白尼關于地球運動的理論和拉馬克對動物的分類[數據:關系(38, 39]。他對光影法則和明暗對比的掌握對藝術和科學都產生了深遠影響[數據:來源(45)]。

## 贊助和職業關系
萊昂納多的職業生涯受到他的贊助人的重大影響。米蘭公爵盧多維科·斯福爾扎雇傭萊昂納多作為宮廷畫家和普通工匠,委托了各種作品,甚至在1499年贈送給他一個葡萄園[數據:關系(9, 19, 84]。在他的晚年,萊昂納多在法國國王弗朗西斯一世的贊助下搬到了法國,國王為他提供了豐厚的收入,并對他評價很高[數據:關系(114, 37]。萊昂納多在法國安博瓦茲附近的克洛克斯莊園度過了他最后幾年,國王經常拜訪他,他得到了他的密友和助手弗朗切斯科·梅爾齊的支持[數據:關系(28, 122)]。

## 遺產和影響
萊昂納多·達·芬奇的影響遠遠超出了他的一生。他在米蘭創立了一所繪畫學校,他的技術和教導被他的學生和追隨者,如喬瓦尼·安布羅焦·達·普雷迪斯和弗朗切斯科·梅爾齊傳承下去[數據:關系(6, 15, 28]。他的作品繼續受到慶祝和研究,鞏固了他作為文藝復興時期最偉大的大師之一的遺產。萊昂納多將藝術和科學融合的能力在兩個領域都留下了不可磨滅的印記,激勵著無數的藝術家和科學家[數據:實體(148, 86]; 關系(27, 12)]。

總之,萊昂納多·達·芬奇對藝術、科學和工程的無與倫比的貢獻,加上他的創新思維和對同時代人及后代的深遠影響,使他成為人類成就史上的一位杰出人物。他的遺產繼續激發著欽佩和研究,強調了他的天才的永恒相關性。

GraphRAG的結果具體,明確標出了引用的數據源。

10、問題生成

GraphRAG還可以根據歷史查詢生成問題,這對于在聊天機器人對話中創建推薦問題非常有用。這種方法結合了知識圖譜的結構化數據和輸入文檔的非結構化數據,產生與特定實體相關的候選問題。

question_generator = LocalQuestionGen(
   llm=llm,
   context_builder=context_builder,
   token_encoder=token_encoder,
   llm_params=llm_params,
   context_builder_params=local_context_params,
)

question_history = [
    "Tell me about Leonardo Da Vinci",
    "Leonardo's early works",
]

Generate questions based on history.

candidate_questions = await question_generator.agenerate(
        question_history=question_history, context_data=None, question_count=5
    )
candidate_questions.response

["- 萊昂納多·達·芬奇的早期作品有哪些,它們存放在哪里?",
 "萊昂納多·達·芬奇與安德烈亞·德爾·維羅基奧的關系如何影響了他的早期作品?",
 "萊昂納多·達·芬奇在米蘭期間承擔了哪些重要項目?",
 "萊昂納多·達·芬奇的工程技能如何促成他的項目?",
 "萊昂納多·達·芬奇與法國弗朗西斯一世的關系有何重要性?"]

如果你想刪除索引以節省空間,可以移除索引根。

# import shutil
#
# shutil.rmtree(index_root)

11、結語

本文帶領大家深入了解了GraphRAG技術,這是一種融合知識圖譜來強化RAG應用的創新手段。GraphRAG特別擅長處理那些需要跨信息片段進行多步驟推理和全面回答問題的復雜任務。

結合Milvus向量數據庫后,GraphRAG能夠高效地在龐大的數據集中探索復雜的語義聯系,從而得出更精準、更深刻的分析結果。這種強強聯合的解決方案,使GraphRAG成為眾多實際通用人工智能(GenAI)應用中的得力助手,為理解和處理復雜信息提供了強有力的支持。


本文轉載自公眾號AI科技論談

原文鏈接:??https://mp.weixin.qq.com/s/rfTwh0B6wnKjauiZsTqwyw??


?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
收藏
回復
舉報
回復
相關推薦
精品久久人人做人人爱| 久久久噜噜噜久噜久久综合| 久久精品影视伊人网| 亚洲自拍第三页| 爱情岛亚洲播放路线| 久久综合九色综合欧美就去吻| 国产成人精品日本亚洲专区61| 毛片久久久久久| 91精品国产自产精品男人的天堂 | 国产亚洲自拍av| 免费av一区| 日韩一区二区三区免费看| a在线视频观看| 菠萝菠萝蜜在线视频免费观看| caoporm超碰国产精品| 国产精品视频网站| 香蕉视频一区二区| 99久久亚洲精品| 精品一区二区电影| 4438x全国最大成人| 蜜桃视频成人m3u8| 精品久久久久久中文字幕| 亚洲一区二区在线免费观看| 桃花色综合影院| 国产成人精品亚洲777人妖| 国产91精品网站| 天天操天天射天天爽| 国产精品x453.com| 国产午夜精品视频| 熟女人妻在线视频| 亚洲视频国产| 91麻豆精品国产91久久久 | 亚洲欧美日本精品| 影音先锋黄色资源| 奇米一区二区| 91精品国产综合久久福利软件 | 300部国产真实乱| 91亚洲欧美| 国产欧美va欧美不卡在线| 精品免费视频123区| 免费av网站观看| 国产成人免费av在线| 亚洲自拍另类欧美丝袜| 国产乱色精品成人免费视频| 日韩高清不卡一区| 日本韩国欧美精品大片卡二| 日韩 欧美 综合| 亚洲高清免费| 性色av香蕉一区二区| 日韩欧美激情视频| 尤物在线精品| 91国产美女视频| 成人免费看片98欧美| 9色国产精品| 欧美性在线观看| 亚洲毛片一区二区三区| 三级欧美韩日大片在线看| 热草久综合在线| 丰满人妻老熟妇伦人精品| 国产欧美日韩亚洲一区二区三区| 91精品国产91久久久久| 日韩在线观看第一页| 国产视频一区三区| 欧美一区第一页| 国产主播第一页| 青青草国产成人av片免费| 国产精品7m视频| 瑟瑟视频在线免费观看| 久久精品久久精品| 91色中文字幕| 亚洲成熟女性毛茸茸| 成人免费毛片嘿嘿连载视频| 国模精品一区二区三区| 欧美伦理影视网| 国产精品另类一区| 400部精品国偷自产在线观看 | 亚洲 欧美 自拍偷拍| 久久婷婷一区二区三区| 日韩中文一区二区三区| 米奇精品一区二区三区| 亚洲制服丝袜在线| 男人天堂999| 日韩免费在线电影| 日韩精品专区在线影院重磅| 日本护士做爰视频| 第九色区aⅴ天堂久久香| 久久99久久99精品中文字幕 | 中国特黄一级片| 一本精品一区二区三区| 国内精品一区二区三区四区| 日批视频免费观看| 国产麻豆成人传媒免费观看| 精品国产一区二区三区麻豆免费观看完整版 | 精品国产亚洲一区二区三区在线 | 成人免费网址| 精品国产成人在线| 在线免费黄色网| 欧美午夜寂寞| 日韩三级影视基地| 在线观看免费av片| 国产综合久久久久影院| 久久一区二区精品| 免费av在线网站| 色综合久久久久久久久久久| 色婷婷激情视频| 精品国产网站| 91av国产在线| www黄色网址| 国产精品成人免费在线| 久久久一本二本三本| 国产日韩欧美中文在线| 亚洲视频在线观看视频| 日本一级淫片色费放| 久久99在线观看| 欧洲亚洲一区| 高潮在线视频| 欧美一区二区三区人| 偷拍夫妻性生活| 亚洲高清免费| 99视频在线播放| 欧美激情二区| 欧美性色综合网| 欧美 变态 另类 人妖| 欧美国产精品| 成人一区二区电影| sese一区| 欧洲一区二区三区在线| 亚洲の无码国产の无码步美| 午夜日韩电影| 国产噜噜噜噜久久久久久久久| 天天操天天干天天操| 亚洲最新视频在线播放| 国产美女18xxxx免费视频| 国产精品亚洲二区| 欧美在线不卡区| 天堂中文在线8| 精品久久香蕉国产线看观看亚洲| 超碰91在线播放| 五月天久久久| 91免费看片在线| 毛片激情在线观看| 欧美酷刑日本凌虐凌虐| 国产精品suv一区二区88| 日日夜夜免费精品视频| 农村寡妇一区二区三区| 忘忧草在线日韩www影院| 亚洲国产免费av| 日韩高清精品免费观看| 成人h动漫精品| 精品视频在线观看一区| 久久精品福利| 欧美一区二粉嫩精品国产一线天| 全色精品综合影院| 91国产免费观看| 青青青手机在线视频| 久久精品国产在热久久| 日本女人高潮视频| 亚洲福利合集| 久久人人看视频| 日韩在线免费播放| 在线观看91精品国产入口| 影音先锋男人在线| 激情综合色播激情啊| 国产又爽又黄ai换脸| 欧美成人精品午夜一区二区| 色综合久综合久久综合久鬼88 | 欧美男男freegayvideosroom| 国内精品小视频在线观看| 日韩专区一区二区| 欧美日韩精品电影| 国产女人被狂躁到高潮小说| 成人精品国产福利| 欧美污视频网站| 欧美高清在线| 高清av免费一区中文字幕| 欧亚在线中文字幕免费| 亚洲亚裔videos黑人hd| 91精品国产乱码久久久久| 亚洲伦理在线精品| 中国av免费看| 久久丁香综合五月国产三级网站| 国产91视频一区| 蜜桃a∨噜噜一区二区三区| 国产精品专区一| 日本在线视频网址| 亚洲色图第一页| 国产精品视频在线观看免费| 午夜精品影院在线观看| 久久免费手机视频| av电影在线观看完整版一区二区| 91在线视频观看免费| 欧美96在线丨欧| 日韩av不卡在线播放| www欧美在线观看| 欧美亚洲视频在线看网址| 日本高清视频在线观看| 亚洲第一精品自拍| 一本一道精品欧美中文字幕| 亚洲成人av一区二区| 四虎影视一区二区| 91麻豆国产福利在线观看| 精品亚洲视频在线| 久久久久久夜| 国产欧美久久久久| 偷拍欧美精品| 日本精品视频一区| 国产精品视屏| 91亚洲精品一区| 九九九伊在线综合永久| 色综合久久久久久中文网| 求av网址在线观看| 亚洲欧洲中文天堂| 少妇一级淫片免费看| 欧美一级二级在线观看| 日韩欧美一级大片| 色婷婷亚洲精品| 99热国产在线观看| 亚洲一区二区三区自拍| 亚洲人做受高潮| 欧美激情一区二区三区四区 | 亚洲香蕉视频| 超碰97在线播放| www.久久爱.com| 国产噜噜噜噜噜久久久久久久久| 亚洲欧美小说色综合小说一区| 欧美激情亚洲国产| av在线免费网址| 久久精品国产成人| 网友自拍视频在线| 中文字幕在线看视频国产欧美| 亚洲色欧美另类| 亚洲第一区在线观看| 国产91免费在线观看| 91精品国产综合久久婷婷香蕉 | 精品av综合导航| 国产成人精品免费看视频| 欧美精品777| 91丨九色丨丰满| 欧美三级中文字幕| 综合久久中文字幕| 欧日韩精品视频| 欧美特级黄色片| 色综合天天综合色综合av | 9191成人精品久久| 91亚洲精品国偷拍自产在线观看| 欧美性猛片aaaaaaa做受| www.久久精品视频| 欧美专区在线观看一区| www.日韩一区| 欧美三级乱人伦电影| 又色又爽又黄无遮挡的免费视频| 欧美日韩在线播放三区| 国产精品久久久国产盗摄| 在线播放中文一区| 999久久久久| 日韩手机在线导航| 日韩中文字幕综合| 国产视频丨精品|在线观看| 女人天堂在线| 日韩在线欧美在线国产在线| 一本一道波多野毛片中文在线| 久久久成人av| 波多野结衣精品| 日本久久久久久久| 伊人久久大香| 国产精华一区| 国产成人黄色| 综合操久久久| 在线观看日韩av电影| aa免费在线观看| 毛片一区二区三区| 91精品啪在线观看国产| 91亚洲午夜精品久久久久久| 成年人免费观看视频网站| 国产精品久久久久久久久晋中| 国产乱国产乱老熟300| 激情亚洲一区二区三区四区 | 影音先锋欧美在线| 在线国产精品一区| 人妻无码视频一区二区三区| 久久国产精品72免费观看| 无码人妻一区二区三区精品视频| 91热门视频在线观看| 一本一本久久a久久| 亚洲成a人v欧美综合天堂下载 | 精品欧美一区二区在线观看| 同心难改在线观看| 日韩在线观看精品| av资源中文在线| 国产在线观看精品| 伦理一区二区| 国产av不卡一区二区| 亚洲一区二区毛片| 欧美一级特黄aaa| 久久久久久久精| 久久精品视频久久| 欧美丝袜第三区| 午夜小视频免费| 欧美成人三级视频网站| 国产综合色区在线观看| 99re资源| 先锋资源久久| 国产第一页视频| 不卡视频一二三四| www.毛片com| 欧洲激情一区二区| 天天摸天天碰天天爽天天弄| 日韩中文字幕网址| 欧美gay视频| 国产自产在线视频一区| 综合久久十次| 欧美女同在线观看| 久久中文娱乐网| 日产精品久久久久| 日韩免费视频线观看| 欧美13一16娇小xxxx| 国产成人午夜视频网址| 国产三级精品三级在线观看国产| 日韩第一页在线观看| 日本中文字幕一区| 国产人妻一区二区| 精品成人在线视频| 成人毛片在线精品国产| 久久国产加勒比精品无码| 99精品在免费线偷拍| 涩涩日韩在线| 午夜在线视频一区二区区别| 三级视频网站在线观看| 亚洲在线一区二区三区| 国产福利第一页| 在线视频中文亚洲| 欧美日韩尤物久久| 欧美久久久久久久| 视频一区在线播放| 欧洲女同同性吃奶| 色一情一乱一乱一91av| 亚洲色图欧美视频| 91精品国产亚洲| 日韩美女国产精品| 北条麻妃在线视频观看| av亚洲精华国产精华| 伊人久久综合视频| 日韩av在线最新| 在线观看v片| 欧美日韩喷水| 日韩和欧美的一区| 影音先锋男人看片资源| 欧美撒尿777hd撒尿| 自拍视频在线网| 91欧美精品成人综合在线观看| 999成人网| 香蕉视频1024| 午夜精品一区二区三区三上悠亚| 天天操天天干天天爽| 欧美一乱一性一交一视频| 国产一区二区三区四区五区| 超碰网在线观看| 欧美国产综合一区二区| 在线观看亚洲国产| 欧美大奶子在线| 国产精品自在| 成人一级片网站| 中文字幕色av一区二区三区| 国产欧美日韩综合精品一区二区三区| 欧美成人全部免费| 欧美福利在线播放网址导航| 欧美日韩一区二区在线免费观看 | 久久久久久久久久久久久久久久久 | 欧美最顶级丰满的aⅴ艳星| 国产欧美高清视频在线| 99日在线视频| 亚洲1区2区3区视频| 国产尤物视频在线| 91亚洲国产成人精品性色| 亚洲国产日本| 在线观看免费小视频| 日韩一区二区三区视频在线观看| av资源一区| 欧洲一区二区在线观看| 久久99精品国产麻豆不卡| 免费人成年激情视频在线观看| 亚洲国产成人久久| 成人交换视频| 2018中文字幕第一页| 日本一区二区在线不卡| 亚洲av无码一区二区三区性色| 68精品国产免费久久久久久婷婷| 日韩精品一区二区三区免费观影| 人妻激情偷乱视频一区二区三区| 欧美午夜美女看片| 18免费在线视频| 狠狠色综合欧美激情| 久久国产尿小便嘘嘘| 99精品视频99| 色综合久综合久久综合久鬼88 | 中文字幕中文在线不卡住| 肥臀熟女一区二区三区| 国产精品一久久香蕉国产线看观看| 欧美va天堂| 免费观看特级毛片|