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

解鎖Agentic RAG,使用LangChain和OpenAI進(jìn)行實(shí)踐

發(fā)布于 2024-12-13 13:25
瀏覽
0收藏

Agentic RAG技術(shù)是一種新興的智能體驅(qū)動(dòng)解決方案,能夠應(yīng)對(duì)復(fù)雜的多文檔問答挑戰(zhàn)。這項(xiàng)技術(shù)通過智能化手段,不僅提升了我們處理文本數(shù)據(jù)的效率,還極大地增強(qiáng)了問答系統(tǒng)的準(zhǔn)確性和深度。本文帶大家來了解這項(xiàng)技術(shù),闡述其如何提升信息檢索和分析的效率與準(zhǔn)確性。

1 Agentic RAG簡介

Agentic RAG是由智能體驅(qū)動(dòng)的技術(shù),能夠靈活處理多文檔問答任務(wù)。這項(xiàng)技術(shù)不僅能比較文檔、總結(jié)內(nèi)容,還能對(duì)多個(gè)摘要進(jìn)行對(duì)比分析。

正因如此,我們不完全依賴于大型語言模型,而是通過智能體來承擔(dān)那些需要深思熟慮、邏輯推理、工具運(yùn)用以及持續(xù)學(xué)習(xí)的任務(wù)。Agentic RAG通過智能化手段,提高了解決復(fù)雜問題的能力,讓問答更加高效和精確。

解鎖Agentic RAG,使用LangChain和OpenAI進(jìn)行實(shí)踐-AI.x社區(qū)

2 基本架構(gòu)

基本架構(gòu)是為每個(gè)文檔設(shè)置一個(gè)文檔智能體,每個(gè)文檔智能體都能在其自己的文檔內(nèi)執(zhí)行問答和摘要。

然后,設(shè)置一個(gè)頂級(jí)智能體(元智能體)來管理所有這些較低級(jí)別的文檔智能體。

解鎖Agentic RAG,使用LangChain和OpenAI進(jìn)行實(shí)踐-AI.x社區(qū)

3 技術(shù)棧

技術(shù)棧包括以下幾個(gè)核心組件:

  • Langchain:特別是LCEL,這是用于構(gòu)建大型語言模型(LLM)應(yīng)用的編排框架。
  • OpenAI:提供我們需要的大型語言模型(LLM)。
  • FAISS-cpu:用作向量存儲(chǔ)解決方案。
  • 數(shù)據(jù)源:我們使用ArxivLoader來檢索arXiv上發(fā)表文章的元數(shù)據(jù)。

4 代碼實(shí)現(xiàn)

安裝所需的依賴項(xiàng):

!pip install -qU langchain langchain_openai langgraph arxiv duckduckgo-search
!pip install -qU faiss-cpu pymupdf

設(shè)置環(huán)境變量:

from google.colab import userdata
from uuid import uuid4
import os
#
os.environ['OPENAI_API_KEY'] = userdata.get('OPENAI_API_KEY')
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_PROJECT"] = f"AIE1 - LangGraph - {uuid4().hex[0:8]}"
os.environ["LANGCHAIN_API_KEY"] = userdata.get('LANGCHAIN_API_KEY')

使用LCEL實(shí)例化一個(gè)簡單的檢索鏈。

from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.document_loaders import ArxivLoader
from langchain_community.vectorstores import FAISS
from langchain_openai import OpenAIEmbeddings

# 加載特定主題的文檔
docs = ArxivLoader(query="Retrieval Augmented Generation", load_max_docs=5).load()

# 將文檔分割成更小的塊
text_splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(
    chunk_size=350, chunk_overlap=50
)

chunked_documents = text_splitter.split_documents(docs)
#
# 實(shí)例化嵌入模型
embeddings = OpenAIEmbeddings(model="text-embedding-3-small",openai_api_key=os.environ['OPENAI_API_KEY'])
# 創(chuàng)建索引-將文檔塊加載到向量存儲(chǔ)中
faiss_vectorstore = FAISS.from_documents(
    documents=chunked_documents,
    embedding=embeddings,
)
# 創(chuàng)建檢索器
retriever = faiss_vectorstore.as_retriever()

生成RAG提示:

from langchain_core.prompts import ChatPromptTemplate

RAG_PROMPT = """\
使用以下上下文回答用戶的查詢。如果你不能回答問題,請(qǐng)回答“我不知道”。

問題:
{question}

上下文:
{context}
"""

rag_prompt = ChatPromptTemplate.from_template(RAG_PROMPT)

實(shí)例化LLM:

from langchain_openai import ChatOpenAI

openai_chat_model = ChatOpenAI(model="gpt-3.5-turbo")

構(gòu)建LCEL RAG鏈:

from operator import itemgetter
from langchain.schema.output_parser import StrOutputParser
from langchain.schema.runnable import RunnablePassthrough

retrieval_augmented_generation_chain = (
       {"context": itemgetter("question") 
    | retriever, "question": itemgetter("question")}
    | RunnablePassthrough.assign(cnotallow=itemgetter("context"))
    | {"response": rag_prompt | openai_chat_model, "context": itemgetter("context")}
)
#
retrieval_augmented_generation_chain

響應(yīng):

{
  "response": "AIMessage(cnotallow='Retrieval Augmented Generation 是一種結(jié)合了深度學(xué)習(xí)技術(shù)和傳統(tǒng)檢索技術(shù)的文本生成范式。它通過顯式獲取知識(shí)以插件方式,引領(lǐng)了許多NLP任務(wù)的可擴(kuò)展性和可能緩解文本生成的難度。它涉及從檢索到的人類編寫的參考資料中生成文本,而不是從頭開始生成。', response_metadata={'token_usage': {'completion_tokens': 73, 'prompt_tokens': 2186, 'total_tokens': 2259}, 'model_name': 'gpt-3.5-turbo', 'system_fingerprint': 'fp_b28b39ffa8', 'finish_reason': 'stop', 'logprobs': None})",
  "context": "[Document(page_cnotallow='...'), Document(page_cnotallow='...'), Document(page_cnotallow='...')]"
}

構(gòu)建工具箱:

為了使智能體能夠回答各種問題并引入外部知識(shí),通常會(huì)給其配備一個(gè)工具箱。

LangChain社區(qū)的存儲(chǔ)庫(https://github.com/langchain-ai/langchain/tree/master/libs/community/langchain_community/tools)中提供了眾多工具,這里選擇了幾種來使用,這樣可以更直觀地展示LangGraph的循環(huán)特性。

具體來說,將整合以下工具:

  • Duck Duck Go網(wǎng)絡(luò)搜索(https://github.com/langchain-ai/langchain/tree/master/libs/community/langchain_community/tools/ddg_search)
  • Arxiv學(xué)術(shù)文獻(xiàn)檢索(https://github.com/langchain-ai/langchain/tree/master/libs/community/langchain_community/tools/arxiv))

from langchain_community.tools.ddg_search import DuckDuckGoSearchRun
from langchain_community.tools.arxiv.tool import ArxivQueryRun
from langgraph.prebuilt import ToolExecutor
tool_belt = [
    DuckDuckGoSearchRun(),
    ArxivQueryRun()
]

tool_executor = ToolExecutor(tool_belt)

實(shí)例化OpenAI函數(shù)調(diào)用:

from langchain_core.utils.function_calling import convert_to_openai_function
#
model = ChatOpenAI(temperature=0)
#
functions = [convert_to_openai_function(t) for t in tool_belt]
model = model.bind_functions(functions)

使用LangGraph:

LangGraph通過StatefulGraph來實(shí)現(xiàn),這個(gè)結(jié)構(gòu)使用AgentState對(duì)象在圖的不同節(jié)點(diǎn)間傳遞信息。

雖然有很多配置選項(xiàng),但核心是AgentState對(duì)象,它被存儲(chǔ)在一個(gè)TypedDict中。這個(gè)對(duì)象的鍵是“messages”,對(duì)應(yīng)的值是一個(gè)BaseMessages的序列,每當(dāng)狀態(tài)發(fā)生變化時(shí),新的消息就會(huì)被添加到這個(gè)序列中。

from typing import TypedDict, Annotated, Sequence
import operator
from langchain_core.messages import BaseMessage

class AgentState(TypedDict):
  messages: Annotated[Sequence[BaseMessage], operator.add]

構(gòu)建節(jié)點(diǎn)

call_model是一個(gè)節(jié)點(diǎn),將...嗯...調(diào)用模型

call_tool是一個(gè)節(jié)點(diǎn),將調(diào)用工具

```python
from langgraph.prebuilt import ToolInvocation
import json
from langchain_core.messages import FunctionMessage

def call_model(state):
  messages = state["messages"]
  response = model.invoke(messages)
return {"messages" : [response]}

def call_tool(state):
  last_message = state["messages"][-1]

  action = ToolInvocation(
      tool=last_message.additional_kwargs["function_call"]["name"],
      tool_input=json.loads(
          last_message.additional_kwargs["function_call"]["arguments"]
      )
  )

  response = tool_executor.invoke(action)

  function_message = FunctionMessage(cnotallow=str(response), name=action.tool)

return {"messages" : [function_message]}

構(gòu)建工作流:

from langgraph.graph import StateGraph, END

workflow = StateGraph(AgentState)

workflow.add_node("agent", call_model)
workflow.add_node("action", call_tool)
workflow.nodes

設(shè)置入口點(diǎn):

workflow.set_entry_point("agent")

構(gòu)建條件邊進(jìn)行路由:

def should_continue(state):
  last_message = state["messages"][-1]

if"function_call"notin last_message.additional_kwargs:
    return"end"

return"continue"

workflow.add_conditional_edges(
    "agent",
    should_continue,
    {
        "continue" : "action",
        "end" : END
    }
)

最后將條件邊連接到智能體節(jié)點(diǎn)和動(dòng)作節(jié)點(diǎn):

workflow.add_edge("action", "agent")

編譯工作流:

app = workflow.compile()
#
app

調(diào)用LangGraph - 提問:

from langchain_core.messages import HumanMessage

inputs = {"messages" : [HumanMessage(cnotallow="在大型語言模型的背景下,RAG是什么?它是什么時(shí)候出現(xiàn)的?")]}
response = app.invoke(inputs)
print(response)

響應(yīng):

{
  "messages": [
    HumanMessage(cnotallow="在大型語言模型的背景下,RAG是什么?它是什么時(shí)候出現(xiàn)的?"),
    AIMessage(cnotallow='', additional_kwargs={'function_call': {'arguments': '{"query":"RAG in the context of Large Language Models"}', 'name': 'duckduckgo_search'}}, response_metadata={'token_usage': {'completion_tokens': 25, 'prompt_tokens': 171, 'total_tokens': 196}, 'model_name': 'gpt-3.5-turbo', 'system_fingerprint': 'fp_b28b39ffa8', 'finish_reason': 'function_call', 'logprobs': None}),
    
FunctionMessage(cnotallow="大型語言模型(LLMs)是處理和生成文本的非常強(qiáng)大的工具。然而,它們天生難以理解更廣泛的信息背景,特別是在處理長篇對(duì)話或復(fù)雜任務(wù)時(shí)。這就是大型上下文窗口和檢索增強(qiáng)生成(RAG)發(fā)揮作用的地方。這些先進(jìn)的、泛化的語言模型是在龐大的數(shù)據(jù)集上訓(xùn)練的,使它們能夠理解和生成類似人類的文本。在RAG的背景下,LLMs被用來基于用戶查詢和從向量數(shù)據(jù)庫檢索的上下文信息生成完整的響應(yīng)。在語言模型快速發(fā)展的背景下,檢索增強(qiáng)生成(RAG)和長上下文大型語言模型(LLMs)之間的辯論引起了廣泛關(guān)注。檢索增強(qiáng)生成(RAG)是一個(gè)AI框架,通過將模型基于外部知識(shí)源來補(bǔ)充LLM的內(nèi)部信息表示,從而提高LLM生成響應(yīng)的質(zhì)量。在基于LLM的問答系統(tǒng)中實(shí)施RAG有兩個(gè)主要好處:它確保模型有... RAG代表檢索增強(qiáng)生成。RAG使大型語言模型(LLM)能夠訪問和利用最新的信息。因此,它提高了LLM的響應(yīng)質(zhì)量和相關(guān)性。下面是一個(gè)簡單的RAG實(shí)現(xiàn)圖。", name='duckduckgo_search'),
    AIMessage(cnotallow="在大型語言模型(LLMs)的背景下,RAG代表檢索增強(qiáng)生成。它是一個(gè)AI框架,通過將模型基于外部知識(shí)源來補(bǔ)充LLM的內(nèi)部信息表示,從而提高LLM生成響應(yīng)的質(zhì)量。RAG使LLM能夠訪問和利用最新的信息,從而提高模型生成的響應(yīng)的相關(guān)性和質(zhì)量。RAG作為增強(qiáng)LLM在理解和生成類似人類文本的能力的方式,在語言模型快速發(fā)展的領(lǐng)域中出現(xiàn)。", response_metadata={'token_usage': {'completion_tokens': 117, 'prompt_tokens': 491, 'total_tokens': 608}, 'model_name': 'gpt-3.5-turbo', 'system_fingerprint': 'fp_3bc1b5746c', 'finish_reason': 'stop', 'logprobs': None})
  ]
}

響應(yīng)內(nèi)容:

RAG代表檢索增強(qiáng)生成,在大型語言模型(LLMs)的背景下。它是一個(gè)AI框架,通過將模型基于外部知識(shí)源來補(bǔ)充LLM的內(nèi)部信息表示,從而提高LLM生成響應(yīng)的質(zhì)量。RAG使LLM能夠訪問和利用最新的信息,從而提高模型生成的響應(yīng)的相關(guān)性和質(zhì)量。RAG作為增強(qiáng)LLM在理解和生成類似人類文本的能力的方式,在語言模型快速發(fā)展的領(lǐng)域中出現(xiàn)。

提問:

問題 = "檢索增強(qiáng)生成論文的主要作者是誰 - 他們參加了哪所大學(xué)?"

inputs = {"messages" : [HumanMessage(cnotallow=問題)]}

response = app.invoke(inputs) print(response['messages'][-1].content)

**響應(yīng):**

關(guān)于“檢索增強(qiáng)生成”論文的主要作者是Huayang Li。不幸的是,提供的摘要中沒有提到他們參加的大學(xué)。

**提問:**

問題 = "檢索增強(qiáng)生成論文的主要作者是誰?"

inputs = {"messages" : [HumanMessage(cnotallow=問題)]}

response = app.invoke(inputs)
print(response['messages'][-1].content)

響應(yīng):論文“檢索增強(qiáng)文本生成”的主要作者是Huayang Li、Yixuan Su、Deng Cai、Yan Wang和Lemao Liu。

本文轉(zhuǎn)載自 ??AI科技論談??,作者: AI科技論談

標(biāo)簽
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦
欧美成人三级在线| 亚洲aⅴ怡春院| 91精品视频播放| 极品颜值美女露脸啪啪| 538任你躁精品视频网免费| 亚洲精品日日夜夜| 久久99精品国产99久久| 波多野结衣视频网址| 97视频精品| 精品国产网站在线观看| av免费中文字幕| 黄色免费网站在线观看| 国产电影精品久久禁18| 韩国美女主播一区| 精品人妻一区二区三区蜜桃视频| 九色成人搞黄网站| 亚洲主播在线观看| 日韩一二三区不卡在线视频| av手机免费看| 天堂va蜜桃一区二区三区| 久久久精品999| 国内精品久久99人妻无码| 制服丝袜专区在线| 亚洲欧美日韩电影| 青青成人在线| 亚洲美女福利视频| 精品一区二区三区免费毛片爱| 在线国产精品视频| 久久精品一区二| xxxx视频在线| 亚洲欧洲日韩综合一区二区| 久久福利电影| 亚洲成熟女性毛茸茸| 欧美aaa在线| 欧美中文在线视频| 久久视频免费看| 先锋资源久久| 视频在线一区二区| 国产精品密蕾丝袜| 色婷婷精品视频| 欧美sm美女调教| 亚洲免费成人在线视频| 国产日韩另类视频一区| 五月天亚洲婷婷| 300部国产真实乱| 1769在线观看| 欧美国产成人精品| 欧美自拍资源在线| 欧美男男同志| 久久久久久久久久电影| 精品国产一区二区三区四区精华| 国产黄色免费大片| 国产伦精品一区二区三区在线观看 | 久久久免费电影| www.毛片com| 亚洲综合激情在线| 久久亚洲精品一区二区| 中国一级片在线观看| 成人羞羞网站入口免费| 国产亚洲视频在线观看| 人妻视频一区二区| 精品av一区二区| 这里只有视频精品| 九九热免费在线| 全球成人免费直播| 日韩在线观看免费全| 免费91在线观看| 国产精品99在线观看| 久久久av网站| 玖玖爱免费视频| 亚洲人人精品| 欧洲中文字幕国产精品| 老熟妇一区二区三区| 日韩成人一区二区三区在线观看| 国产精品国产三级国产aⅴ浪潮| 无码人妻aⅴ一区二区三区有奶水| 麻豆精品91| 国产精品久久久久久搜索| 一本色道久久综合精品婷婷| 精品一区二区在线观看| 99在线视频首页| 十八禁一区二区三区| 久久影视一区二区| 亚洲午夜激情| 欧美xxxxhdvideosex| 亚洲不卡av一区二区三区| 男人亚洲天堂网| 日本亚洲欧洲无免费码在线| 日韩欧美123| 久久人人妻人人人人妻性色av| 国产精品免费不| 久久色免费在线视频| 成人免费看片98| 久久精品国语| 91久久精品国产91久久性色tv| 欧美视频一二区| 国产日韩欧美a| 日本xxxxx18| 筱崎爱全乳无删减在线观看| 欧美在线色视频| 又色又爽又黄18网站| 亚洲午夜久久| 久久不射电影网| 超碰中文字幕在线| 国内精品自线一区二区三区视频| 国产伦精品一区二区三区四区免费| 蜜桃视频在线观看视频| 亚洲伦理在线精品| 亚洲精品无码久久久久久| 亚洲国产天堂| 亚洲激情在线观看| 在线日韩国产网站| 久久福利精品| 产国精品偷在线| 在线免费av网站| 性欧美疯狂xxxxbbbb| 日本美女高潮视频| 韩国女主播一区二区三区| 在线日韩av观看| 国产情侣在线视频| 黄色资源网久久资源365| 蜜桃91精品入口| 国产在线二区| 欧美性xxxxx极品少妇| 少妇被狂c下部羞羞漫画| 欧美国产一级| 国产精品扒开腿做| 午夜福利一区二区三区| 专区另类欧美日韩| 日本在线观看免费视频| 午夜精品影视国产一区在线麻豆| 欧美精品一区二区三区国产精品| 中文字幕视频二区| 久久色.com| 国产青青在线视频| 91午夜精品| 欧美日韩国产成人| 国产精品热久久| 国产精品乱人伦| www黄色在线| 偷拍自拍亚洲色图| 97色在线视频观看| 人妻妺妺窝人体色www聚色窝| 亚洲美女区一区| 日本高清免费观看| 国产电影一区二区在线观看| 国产精品99久久久久久白浆小说| 艳母动漫在线看| 欧美日韩国产中文字幕 | 欧美激情在线一区二区三区| 国产成人无码精品久久久性色| 99久久香蕉| 久久免费少妇高潮久久精品99| 国产后入清纯学生妹| 亚洲欧美日韩国产综合在线| 久久精品亚洲天堂| 99精品视频在线| 91久久久亚洲精品| 国产美女av在线| 欧美一区二区在线视频| 久久视频一区二区三区| 麻豆一区二区在线| 中文字幕中文字幕一区三区| 综合久久av| 美女精品久久久| 亚洲av综合色区无码一二三区| 一区二区三区欧美日韩| 在线观看成人动漫| 国产精品夜夜夜| 日韩av电影免费在线| 国产三级一区| 欧美精品一区二区免费| 日本高清视频网站| 色婷婷久久久亚洲一区二区三区| 美女爆乳18禁www久久久久久| 日韩av一区二| 熟女视频一区二区三区| 成人涩涩网站| 57pao成人国产永久免费| 国产综合视频一区二区三区免费| 欧美日韩一区高清| 国产精品国产精品88| 国产盗摄一区二区三区| 黄色www网站| 欧美色图在线播放| 91久久极品少妇xxxxⅹ软件| 蜜桃麻豆影像在线观看| 色青青草原桃花久久综合 | 亚洲第一网站免费视频| 久久久精品视频网站| 国产精品毛片大码女人| 女人扒开腿免费视频app| 中文亚洲字幕| 亚洲欧洲精品在线| 白嫩白嫩国产精品| 日韩美女中文字幕| 1区2区3区在线视频| 亚洲精品wwww| 国产原创中文av| 欧美视频中文在线看| www.xx日本| 91在线国内视频| 午夜视频在线网站| 亚洲在线电影| 国产性生活免费视频| 国产精品欧美三级在线观看| 亚洲一区二区三区777| 妞干网免费在线视频| 久久精品国产一区二区三区| 亚洲人成色777777精品音频| 91麻豆精品国产91久久久久久 | 精品手机在线视频| 成人黄色777网| 日本黄大片一区二区三区| 日韩一级网站| 欧美精品久久96人妻无码| 国产欧美日韩免费观看| 国产福利一区二区三区在线观看| 自拍偷自拍亚洲精品被多人伦好爽 | 欧美日韩不卡一区二区| 久久久久99精品成人片三人毛片| 亚洲视频 欧洲视频| av女人的天堂| 99久久亚洲一区二区三区青草| 国产5g成人5g天天爽| 日韩黄色片在线观看| 浮妇高潮喷白浆视频| 欧美全黄视频| 色乱码一区二区三区熟女| 啪啪亚洲精品| 久久免费99精品久久久久久| 亚洲精品在线国产| 92看片淫黄大片欧美看国产片| 欧美大片1688网站| 国产精品99免视看9| 中文在线а√天堂| 78m国产成人精品视频| 国产三线在线| 久久久久久18| 欧美野外wwwxxx| 欧美精品午夜视频| 调教一区二区| 久久99精品久久久久久琪琪| 黄色动漫在线| 日韩视频一区在线| 麻豆视频在线观看免费网站| 丝袜情趣国产精品| √天堂资源地址在线官网| 夜夜嗨av一区二区三区免费区| 蜜桃视频在线免费| 亚洲视频在线观看视频| 精品视频三区| 亚洲图片在区色| 电影av在线| 日韩在线观看高清| 大地资源网3页在线观看| 色七七影院综合| 免费av不卡| 久久夜色精品亚洲噜噜国产mv | 亚洲欧洲精品一区二区三区不卡| 超薄肉色丝袜一二三| 国产精品午夜电影| 久久一级免费视频| 亚洲欧美偷拍卡通变态| 久草网站在线观看| 亚洲国产毛片aaaaa无费看| 日韩免费av片| 欧美午夜无遮挡| 国产主播第一页| 欧美日本不卡视频| www.国产欧美| 亚洲国产日韩欧美在线动漫| 视频国产一区二区三区| 一本色道久久综合亚洲精品小说| 婷婷五月在线视频| 欧美尺度大的性做爰视频| 丁香花在线电影小说观看| 欧美一性一乱一交一视频| 国产一区一一区高清不卡| 国产一区二区香蕉| 视频欧美一区| 欧美日韩在线播放一区二区| 日本黄色精品| 国产情侣第一页| 午夜在线观看免费一区| 在线观看国产一级片| 国产精品一卡二| 国产传媒第一页| 中文字幕一区二区不卡| 五月天综合在线| 在线看国产一区二区| 国产麻豆免费视频| 亚洲精品国产精品国自产在线| www.黄在线观看| 久久99久久99精品免观看粉嫩| 久久r热视频| 91精品视频免费| 免费av一区二区三区四区| 日韩视频在线免费播放| 国产精品一级| 污免费在线观看| 国产日韩欧美精品综合| 久久这里只有精品免费| 欧美视频一区二区三区四区 | 成人精品在线视频观看| 女女互磨互喷水高潮les呻吟 | 日产精品久久久久久久蜜臀| 久久xxxx| 国产一卡二卡三卡四卡| 国产精品毛片久久久久久久| 久久视频免费在线观看| 4438成人网| 免费一级毛片在线观看| 欧美激情视频网站| 亚洲一区二区三区久久久| 久久综合给合久久狠狠色| 在线中文字幕亚洲| 性欧美极品xxxx欧美一区二区| 岛国av在线一区| 神马午夜精品91| 欧美日本在线视频| 女人偷人在线视频| 国内偷自视频区视频综合| 国产精品亚洲四区在线观看| 日本精品二区| 国产亚洲一级| wwwxx日本| 亚洲精品视频免费看| 一区二区三区午夜| 国产午夜精品全部视频播放| 色在线免费观看| 国产欧美亚洲日本| 国产综合视频| 又大又长粗又爽又黄少妇视频| 成人欧美一区二区三区小说 | 欧美大胆性生话| 国产一区国产精品| 狠狠综合久久| 亚洲av无码成人精品区| 亚洲欧洲成人精品av97| 中文字幕第三页| 夜夜嗨av一区二区三区免费区| 三级成人黄色影院| 久久久久久99| 中文日韩在线| 中文字字幕码一二三区| 精品久久久精品| 亚洲av片在线观看| 668精品在线视频| 午夜先锋成人动漫在线| 看av免费毛片手机播放| 91香蕉视频mp4| 九九热在线免费观看| 亚洲美女动态图120秒| 中文在线а√在线8| 欧美日韩大片一区二区三区| 久久成人在线| 天天操天天干天天操天天干| 欧美唯美清纯偷拍| 精品视频在线一区二区| 91网站免费观看| 国产综合网站| 成人精品在线观看视频| 色综合久久久久综合| 成人在线观看网站| 国产人妖伪娘一区91| 亚洲男女av一区二区| 免费国偷自产拍精品视频| 亚洲资源在线观看| 天堂在线中文| 国产精品久久久av| 天天天综合网| 逼特逼视频在线观看| 欧美午夜片欧美片在线观看| lutube成人福利在线观看| 91九色在线视频| aa国产精品| 久久久久久成人网| 欧美成人三级电影在线| 中文字幕 在线观看| 正在播放一区二区三区| 高清在线观看日韩| 久久久久在线视频| 欧美超级免费视 在线| 老汉色老汉首页av亚洲| 欧美成人黄色网址| 夜夜嗨av一区二区三区网页| 四虎影视精品成人| 成人av电影天堂| 国产精品腿扒开做爽爽爽挤奶网站| 欧美另类69xxxx| 亚洲成人久久电影| 国产一区二区三区四区五区3d| 日本aa在线观看| 国产欧美日韩综合精品一区二区| 99国产成人精品| 日韩免费中文字幕| 国自产拍偷拍福利精品免费一| 日本性高潮视频| 亚洲精品久久久久|