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

基于Agent的金融問答系統(tǒng):RAG的檢索增強(qiáng)之上下文重排和壓縮 原創(chuàng)

發(fā)布于 2024-11-26 08:58
瀏覽
0收藏

前言

在上一章??【項(xiàng)目實(shí)戰(zhàn)】基于Agent的金融問答系統(tǒng):RAG的檢索增強(qiáng)之ElasticSearch??中,我們?cè)谝呀?jīng)構(gòu)建的Agent框架上,通過集成檢索器將ES檢索器和多路召回檢索器集成進(jìn)來,提升了檢索的召回率。本章,我們將基于項(xiàng)目問題,進(jìn)一步優(yōu)化Agent的檢索能力。

問題

隨著該項(xiàng)目檢索能力的增強(qiáng),我們計(jì)劃對(duì)天池大賽提供的1000個(gè)問題進(jìn)行執(zhí)行,依次評(píng)估我們的系統(tǒng)能力如何。 在這個(gè)測(cè)試過程中,我們發(fā)現(xiàn)了多個(gè)待優(yōu)化的問題,其中有2個(gè)問題的解決值得分享,在此作為記錄以供讀者參考。

問題1:執(zhí)行過程中,偶爾會(huì)出現(xiàn)RAG檢索結(jié)果內(nèi)容過長,超出大模型能夠接收的范圍(如下圖中顯示的status_code=400),導(dǎo)致執(zhí)行中斷

基于Agent的金融問答系統(tǒng):RAG的檢索增強(qiáng)之上下文重排和壓縮-AI.x社區(qū)

基于Agent的金融問答系統(tǒng):RAG的檢索增強(qiáng)之上下文重排和壓縮-AI.x社區(qū)

問題2:Agent遇到計(jì)算漲幅、收益率等問題時(shí),會(huì)反復(fù)構(gòu)造SQL語句,試圖從數(shù)據(jù)庫中直接查詢出對(duì)應(yīng)的數(shù)據(jù),從而導(dǎo)致思考迭代此處超過限制,程序異常

基于Agent的金融問答系統(tǒng):RAG的檢索增強(qiáng)之上下文重排和壓縮-AI.x社區(qū)

優(yōu)化方案

分析上述問題后,我們計(jì)劃對(duì)整體程序進(jìn)行優(yōu)化,優(yōu)化方案如下:

基于Agent的金融問答系統(tǒng):RAG的檢索增強(qiáng)之上下文重排和壓縮-AI.x社區(qū)

說明:

  • 針對(duì)問題1,我們計(jì)劃給集成檢索器增加上下文重排和壓縮,以解決長文本問題。
  • 針對(duì)問題2,我們計(jì)劃為Agent掛載更多的工具,進(jìn)而讓Agent使用工具計(jì)算漲幅、收益率等。

優(yōu)化步驟

1、檢索器增加上下文壓縮

優(yōu)化代碼文件:??app/rag/retrievers.py??

from langchain_core.callbacks importCallbackManagerForRetrieverRun
from utils.logger_config importLoggerManager
from langchain_core.retrievers importBaseRetriever
from langchain_core.documents importDocument
from langchain.retrievers importEnsembleRetriever
from langchain.retrievers.multi_query importMultiQueryRetriever
from langchain.retrievers.contextual_compression importContextualCompressionRetriever
from langchain.retrievers.document_compressors importLLMChainExtractor
from rag.elasticsearch_db importElasticsearchDB
# ES需要導(dǎo)入的庫
from typing importList
import logging
import settings
from langchain_community.document_transformers import(
LongContextReorder,
)
from utils.util import get_rerank_model

logger =LoggerManager().logger


classSimpleRetrieverWrapper():
"""自定義檢索器實(shí)現(xiàn)"""

def__init__(self, store, llm, **kwargs):
        self.store = store
        self.llm = llm
        logger.info(f'檢索器所使用的Chat模型:{self.llm}')

defcreate_retriever(self):
        logger.info(f'初始化自定義的Retriever')

# 初始化一個(gè)空的檢索器列表
        retrievers =[]
        weights =[]

# Step1:創(chuàng)建一個(gè) 多路召回檢索器 MultiQueryRetriever
        chromadb_retriever = self.store.as_retriever()
        mq_retriever =MultiQueryRetrieverWrapper.from_llm(retriever=chromadb_retriever, llm=self.llm)

# Step2:創(chuàng)建一個(gè) 上下文壓縮檢索器ContextualCompressionRetriever
if settings.COMPRESSOR_ENABLE isTrue:
            compressor =LLMChainExtractor.from_llm(llm=self.llm)
            compression_retriever =ContextualCompressionRetrieverWrapper(
                base_compressor=compressor, base_retriever=mq_retriever
)
# 開啟開關(guān)就使用壓縮檢索器
            retrievers.append(compression_retriever)
            weights.append(0.5)
            logger.info(f'已啟用 ContextualCompressionRetriever')
else:
# 關(guān)閉開關(guān)就使用多路召回檢索器
            retrievers.append(mq_retriever)
            weights.append(0.5)
            logger.info(f'已啟用 MultiQueryRetriever')

# Step3:創(chuàng)建一個(gè) ES 檢索器
if settings.ELASTIC_ENABLE_ES isTrue:
            es_retriever =ElasticsearchRetriever()
            retrievers.append(es_retriever)
            weights.append(0.5)
            logger.info(f'已啟用 ElasticsearchRetriever')

# 使用集成檢索器,將所有啟用的檢索器集合在一起
        ensemble_retriever =EnsembleRetriever(retrievers=retrievers, weights=weights)
return ensemble_retriever

說明:

  • 首先,我們創(chuàng)建一個(gè)空的檢索器列表,用于存儲(chǔ)啟用的檢索器。
  • 其次,創(chuàng)建一個(gè) ??MultiQueryRetrieverWrapper?? ,用于將ES檢索器與多路召回檢索器集成。
  • 然后,通過 ??ContextualCompressionRetrieverWrapper?? ,為多路檢索器添加上下文壓縮功能。
  • 最后,將檢索器列表與權(quán)重列表傳入集成檢索器,完成集成。

此處,MultiQueryRetrieverWrapper 和 ContextualCompressionRetrieverWrapper 分別是基于 ??MultiQueryRetriever??? 和 ??ContextualCompressionRetriever?? 進(jìn)一步封裝實(shí)現(xiàn)的,在3、中會(huì)詳細(xì)介紹。

2、檢索器增加上下文重排

對(duì)之前實(shí)現(xiàn)的ElasticsearchRetriever增加上下文重排功能,具體代碼如下:

優(yōu)化代碼文件:??app/rag/retrievers.py??

class ElasticsearchRetriever(BaseRetriever):
def_get_relevant_documents(self, query: str, )->List[Document]:
"""Return the first k documents from the list of documents"""
        es_connector =ElasticsearchDB()
        query_result = es_connector.search(query)

# 增加長上下文重排序
        reordering =LongContextReorder()
        reordered_docs = reordering.transform_documents(query_result)
# logger.info(f"ElasticSearch檢索到的原始文檔:")
# for poriginal in query_result:
#     logger.info(f"{poriginal}")

        logger.info(f"ElasticSearch檢索重排后的文檔:")
for preordered in reordered_docs:
            logger.info(f"{preordered}")

        logger.info(f"ElasticSearch檢索到資料文件個(gè)數(shù):{len(query_result)}")

if reordered_docs:
return[Document(page_cnotallow=doc)for doc in reordered_docs]
return []

3、優(yōu)化日志輸出

由于 ??MultiQueryRetriever?? 是langchain已經(jīng)封裝好的檢索器,如果我們需要在其基礎(chǔ)上增加一些功能,比如:增加日志,我們需要對(duì)其進(jìn)行重寫,具體方法:

重寫MultiQueryRetriever

創(chuàng)建一個(gè)新的Class ??MultiQueryRetrieverWrapper???,繼承 ??MultiQueryRetriever??? ,重寫 ??_get_relevant_documents?? 方法,具體代碼如下:

class MultiQueryRetrieverWrapper(MultiQueryRetriever):
def_get_relevant_documents(
        self,
        query: str,
        *,
        run_manager: CallbackManagerForRetrieverRun,
    )->List[Document]:
"""
        對(duì)MultiQueryRetriever進(jìn)行重寫,增加日志打印
        """
        queries = self.generate_queries(query, run_manager)
if self.include_original:
            queries.append(query)
        documents = self.retrieve_documents(queries, run_manager)

# 增加長上下文重排序
        reordering =LongContextReorder()
        reordered_docs = reordering.transform_documents(documents)

        logger.info(f'MultiQuery生成的檢索語句:')
for q in queries:
            logger.info(f"{q}")
        logger.info(f'MultiQuery檢索到的資料文件:')
for doc in documents:
            logger.info(f"{doc}")
        logger.info(f"MultiQuery檢索到資料文件個(gè)數(shù):{len(documents)}")

return self.unique_union(reordered_docs)

重寫ContextualCompressionRetriever

創(chuàng)建一個(gè)新的Class ??ContextualCompressionRetrieverWrapper???,繼承 ??ContextualCompressionRetriever??? ,重寫 ??_get_relevant_documents?? 方法,具體代碼如下:

class ContextualCompressionRetrieverWrapper(ContextualCompressionRetriever):
from typing importAny,List
def_get_relevant_documents(
        self,
        query: str,
        *,
        run_manager: CallbackManagerForRetrieverRun,
        **kwargs: Any,
    )->List[Document]:
"""
        對(duì)ContextualCompressionRetriever進(jìn)行重寫,增加日志打印
        """

        docs = self.base_retriever.invoke(
            query, cnotallow={"callbacks": run_manager.get_child()},**kwargs
)
if docs:
            compressed_docs = self.base_compressor.compress_documents(
                docs, query, callbacks=run_manager.get_child()
)
            logger.info(f'壓縮后的文檔長度:{len(compressed_docs)}')
            logger.info(f'壓縮后的文檔:{compressed_docs}')
returnlist(compressed_docs)
else:
return []

4、給Agent增加更多工具

實(shí)現(xiàn)工具函數(shù):計(jì)算股票年化收益率

代碼文件:??app/finance_bot_ex.py??

# 定義股票年化收益率計(jì)算函數(shù)
# 年化收益率定義為:((有記錄的一年的最終收盤價(jià)-有記錄的一年的年初當(dāng)天開盤價(jià))/有記錄的一年的當(dāng)天開盤價(jià))* 100%。
def calculate_stock_annualized_return(final_closing_price: float, initial_opening_price: float) -> float:
    """
    計(jì)算股票年化收益率
    """
    annualized_return = ((final_closing_price - initial_opening_price) / initial_opening_price) * 100
    return annualized_return

Agent增加工具

在??init_agent??函數(shù)中,增加工具函數(shù),具體代碼如下:

代碼優(yōu)化文件:??app/finance_bot_ex.py??

definit_agent(self):
# 初始化 RAG 工具
        retriever_tool = self.init_rag_tools()

# 初始化 SQL 工具
        sql_tools = self.init_sql_tool(settings.SQLDATABASE_URI)

# 創(chuàng)建系統(tǒng)Prompt提示語
        system_prompt = self.create_sys_prompt()

# 創(chuàng)建Agent
        agent_executor = create_react_agent(
            self.chat,
            tools=[
                get_datetime,
                calculate_stock_annualized_return,# 增加自定義的計(jì)算年化收益率工具
                retriever_tool]+ sql_tools,
            state_modifier=system_prompt,
            checkpointer=MemorySaver()
# state_modifier=modify_state_messages,
)
return agent_executor

4、驗(yàn)證測(cè)試

完成上述檢索器的優(yōu)化之后,我們使用test_framework.py進(jìn)行驗(yàn)證,驗(yàn)證結(jié)果如下:

問題1解決效果

1. 用戶輸入問題,觸發(fā)RAG檢索的 MultiQueryRetriever 檢索器

基于Agent的金融問答系統(tǒng):RAG的檢索增強(qiáng)之上下文重排和壓縮-AI.x社區(qū)

2. 通過上下文壓縮之后,原本 MultiQueryRetriever 檢索到的資料文件數(shù)量由12個(gè)減少到1個(gè)。

基于Agent的金融問答系統(tǒng):RAG的檢索增強(qiáng)之上下文重排和壓縮-AI.x社區(qū)

3. 通過上下文壓縮之后,原本 ElasticsearchRetriever 檢索到的資料文件數(shù)量由3個(gè)減少到2個(gè)。

基于Agent的金融問答系統(tǒng):RAG的檢索增強(qiáng)之上下文重排和壓縮-AI.x社區(qū)

4. 最后,將兩個(gè)檢索器的結(jié)果進(jìn)行整合后,大模型給出最終答案。

基于Agent的金融問答系統(tǒng):RAG的檢索增強(qiáng)之上下文重排和壓縮-AI.x社區(qū)

問題2解決效果

1. 我們輸入問題:計(jì)算代碼000798股票在2020年的年化收益率,保留兩位小數(shù)。

基于Agent的金融問答系統(tǒng):RAG的檢索增強(qiáng)之上下文重排和壓縮-AI.x社區(qū)

2. Agent分析問題后,形成SQL查詢語句:獲取2020年第一天開盤價(jià)以及2020年最后一天的收盤價(jià)

基于Agent的金融問答系統(tǒng):RAG的檢索增強(qiáng)之上下文重排和壓縮-AI.x社區(qū)

3. Agent獲得開盤價(jià)和收盤價(jià)之后,調(diào)用我們提供的 calculate_stock_annualized_return 函數(shù)計(jì)算年化收益率,并返回結(jié)果。

基于Agent的金融問答系統(tǒng):RAG的檢索增強(qiáng)之上下文重排和壓縮-AI.x社區(qū)

結(jié)束語

基于Agent的金融問答系統(tǒng)系列文章在此告一段落了。 在這個(gè)項(xiàng)目中,我們不只利用AI技術(shù)完成了項(xiàng)目課題,其中也不乏應(yīng)用了軟件工程的一些方法論,而最為重要的是:我們解決了一個(gè)又一個(gè)的問題。 最后,附帶一張黑神話悟空的圖片,希望看到此篇文章的你我一同共勉。

?

本文轉(zhuǎn)載自公眾號(hào)一起AI技術(shù) 作者:Dongming

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

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
標(biāo)簽
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦
欧美日韩国产精品一区| 国产一区久久久| 中文字幕欧美日韩在线| 中文字幕一区久久| 国产污视频在线播放| 日本一区二区动态图| 亚洲综合自拍一区| 中文人妻av久久人妻18| 91精品综合| 亚洲美女www午夜| 三级av免费看| 天天综合网天天| 亚洲午夜成aⅴ人片| 日韩av影视| 婷婷久久久久久| 老司机精品视频一区二区三区| 欧美大片在线免费观看| 亚洲色图日韩精品| 日韩精品免费一区二区三区竹菊| 欧美精品在线观看一区二区| 精品人妻一区二区三区四区在线 | 91免费观看在线| 亚洲一区中文字幕在线观看| 视频一区二区三区四区五区| 欧美日韩ab| 日韩中文在线观看| www.狠狠爱| 女同一区二区三区| 日韩免费高清av| 中文字幕22页| av久久网站| 午夜av区久久| 97免费视频观看| 中文字幕资源网在线观看| 国产欧美日韩在线视频| 欧美不卡1区2区3区| 亚洲春色一区二区三区| 国内精品国产三级国产a久久| 日韩免费黄色av| 日韩欧美三级视频| 99精品国产福利在线观看免费| 九九久久久久99精品| 色偷偷男人天堂| 精品久久一区| 亚洲色图25p| 色欲av无码一区二区三区| 国产精品中文字幕制服诱惑| 日韩美女在线视频 | 国产精品sm调教免费专区| 欧美专区18| 国产91精品在线播放| 久草手机在线观看| 午夜在线精品| 国产91在线高潮白浆在线观看 | 欧美群妇大交群的观看方式| 亚州精品一二三区| 超碰国产精品一区二页| 欧美精品色综合| 香蕉网在线视频| 成人知道污网站| 亚洲精品黄网在线观看| 熟女少妇一区二区三区| 精品一二三区| 久久精品小视频| 亚洲成人生活片| 国一区二区在线观看| 久久久久久亚洲精品不卡| 在线观看 中文字幕| 久久深夜福利| 国产在线精品成人一区二区三区| 国产日韩一级片| 成人久久久精品乱码一区二区三区 | 成人免费视频app| 久久99精品国产一区二区三区| 四虎影视在线播放| 91丝袜呻吟高潮美腿白嫩在线观看| 国产中文一区二区| 触手亚洲一区二区三区| 最近中文字幕一区二区三区| 丰满的少妇愉情hd高清果冻传媒| 理论不卡电影大全神| 在线区一区二视频| 国产欧美精品一二三| 久久婷婷国产| 色偷偷av一区二区三区乱| 久草成人在线视频| 日韩精品电影一区亚洲| 亚洲自拍小视频| 天堂资源最新在线| 国产精品久久久久一区二区三区共| 麻豆中文字幕在线观看| 高清视频在线观看三级| 欧美视频一区二区三区在线观看| 性久久久久久久久久久久久久| 国偷自产av一区二区三区| 国产亚洲美女精品久久久| 特一级黄色录像| 午夜在线观看免费一区| 成人淫片在线看| 免费黄网站在线观看| 亚洲欧洲综合另类| 可以免费观看av毛片| 日本一区二区三区电影免费观看| 国产午夜精品全部视频播放 | 久久午夜影视| 国产99在线播放| aⅴ在线视频男人的天堂| 亚洲国产色一区| 91福利国产成人精品播放| 国产成人福利av| 久久久久www| 中文字幕69页| 成人激情小说网站| 日本一道在线观看| 97成人超碰| 亚洲欧美另类自拍| 日本熟妇毛茸茸丰满| 精品在线一区二区| 视频二区一区| 粉嫩一区二区| 一级全黄裸体免费视频| 国产亚洲欧洲997久久综合| 久久综合久久网| 国产一区二区三区免费观看在线| 亚洲午夜国产成人av电影男同| 国产精品成人网站| 国产福利精品导航| 99re99热| www一区二区三区| 日韩亚洲精品电影| 中文字幕在线日亚洲9| 久久久精品tv| 免费观看日韩毛片| 全球av集中精品导航福利| 欧美国产精品日韩| av av片在线看| 亚洲美女精品一区| www.污污视频| 五月天久久777| 国产精品影片在线观看| 成人亚洲性情网站www在线观看| 精品日韩中文字幕| 人妻熟女aⅴ一区二区三区汇编| 最新日韩欧美| 久久久国产精品一区二区三区| 538在线视频| 亚洲精品第一国产综合精品| 国产无套内射又大又猛又粗又爽| 国产凹凸在线观看一区二区| 成年在线观看视频| 风间由美性色一区二区三区四区| 色综合天天综合网国产成人网 | 国产成a人亚洲精v品在线观看| 久久久久久久久久久久电影| 久久网福利资源网站| 国产区精品在线| 一区二区欧美视频| 午夜影院福利社| 亚洲精品欧洲| 麻豆一区区三区四区产品精品蜜桃| 亚洲欧洲高清| 国产亚洲美女久久| 国产免费一区二区三区最新不卡| 亚洲视频你懂的| 秘密基地免费观看完整版中文 | 日本aⅴ大伊香蕉精品视频| 国产在线视频网站| 欧美日韩国产系列| 黄色一级片在线| caoporn国产精品| 日韩一级片播放| 亚洲欧美在线专区| 国产一区二区三区四区五区加勒比| 手机av在线| 视频一区视频二区国产精品| 国产同性人妖ts口直男| 亚洲第一激情av| 国产性猛交xx乱| 国产成人精品亚洲777人妖| 国产男女在线观看| 久久美女视频| 国产伦精品一区二区三区四区免费 | 午夜av免费在线观看| 欧美日韩亚洲国产综合| 精品少妇theporn| 国产日韩欧美精品在线| 色欲无码人妻久久精品| 亚洲欧美视频一区二区三区| 在线天堂一区av电影| 久久精品论坛| 91久久久久久国产精品| 人成在线免费网站| www.欧美精品| 日本福利片在线| 日韩一区二区在线观看视频播放| 天天做天天爱夜夜爽| 亚洲欧洲av一区二区三区久久| 人妻av一区二区| 精品中文字幕一区二区小辣椒| 国产伦精品一区二区三区四区视频_| 国产精品一区高清| 国产精品久久久久久久久婷婷 | 精品一区免费av| 国产中文字幕视频在线观看| 99久久国产综合精品成人影院| 久久偷看各类wc女厕嘘嘘偷窃| www.久久99| 国产激情视频一区| 免费在线观看av电影| 日韩在线观看网站| 国产高清在线| 日韩精品在线私人| 丰满熟女一区二区三区| 8v天堂国产在线一区二区| 国产精品suv一区| 亚洲国产精品一区二区久久恐怖片 | 日韩有码电影| 欧美大片一区二区| 国产永久免费视频| 欧美亚日韩国产aⅴ精品中极品| 日韩三级视频在线播放| 一区二区三区丝袜| 97在线观看视频免费| 欧美国产日韩亚洲一区| 第四色在线视频| 成人久久久精品乱码一区二区三区 | 亚洲人免费视频| 午夜在线视频免费| 欧美精品一区二区三区在线| 国产精品无码在线播放| 欧美日本一区二区在线观看| 波多野结衣绝顶大高潮| 日本乱人伦一区| 三级视频在线观看| 欧美视频二区36p| 国偷自拍第113页| 岛国av一区二区三区| 国产污视频在线观看| 一二三四区精品视频| 九九视频免费观看| 亚洲一线二线三线久久久| 国产精品老熟女一区二区| 亚洲激情校园春色| 久久免费在线观看视频| 亚洲在线视频网站| 日本免费一二三区| 午夜久久久久久电影| 日本少妇吞精囗交| 欧美午夜精品久久久久久久| 91美女免费看| 色哟哟在线观看一区二区三区| 天堂网视频在线| 欧美日韩一区视频| 国产一区二区麻豆| 日韩欧美色综合| 日本精品999| 日韩电影网在线| 理论在线观看| 中日韩午夜理伦电影免费| 香蕉视频在线播放| 久久成人一区二区| av在线不卡免费| 日本欧美一级片| 四虎精品一区二区免费| 亚洲最大福利网站| 加勒比视频一区| 欧美日韩国产一二| 天天久久综合| 成人免费毛片在线观看| 久久久精品午夜少妇| 少妇网站在线观看| 国产成人av电影在线观看| 好吊色视频一区二区三区| 久久久精品免费免费| 欧美性生交大片| 五月婷婷激情综合| 亚洲 国产 日韩 欧美| 欧美一区午夜精品| 天堂av资源网| 中文字幕免费国产精品| 国产高清在线a视频大全| 日本成人免费在线| 精品999日本久久久影院| 好看的日韩精品视频在线| 欧美在线色图| 大荫蒂性生交片| 日韩成人一级大片| www.com日本| 中文字幕欧美三区| 在线免费观看毛片| 欧美日韩精品一区二区天天拍小说| 高清乱码毛片入口| 中文字幕在线看视频国产欧美在线看完整 | 久久综合九色综合欧美就去吻| 女性裸体视频网站| 亚洲二区视频在线| 亚洲天堂手机版| 国产丝袜精品视频| 中文字幕在线观看播放| 国产成人精品日本亚洲 | 日韩精品一区二区三区四区五区| 中文字幕一区二区三区欧美日韩 | 日本午夜精品理论片a级app发布| 在线观看91视频| 男人天堂手机在线观看| 日韩亚洲综合在线| 欧美日韩精品免费观看视完整| 91手机在线播放| 日韩在线观看电影完整版高清免费悬疑悬疑 | 国产高清免费av在线| 国语自产精品视频在免费| 四虎国产精品永久在线国在线| 欧美日韩在线观看一区二区三区| 欧美激情亚洲| 99九九99九九九99九他书对| 国产日本亚洲高清| 欧美三级午夜理伦| 亚洲成人a**站| 午夜av在线免费观看| 国产有码在线一区二区视频| 国产一区二区区别| 欧美日本视频在线观看| 成人aaaa免费全部观看| 青娱乐国产在线视频| 91精品久久久久久蜜臀| 成人三级黄色免费网站| 日韩av片电影专区| 日韩电影不卡一区| 免费欧美一级视频| av资源网一区| 久草视频精品在线| 精品国产乱码久久久久久夜甘婷婷| av毛片在线看| 91网免费观看| 自拍视频亚洲| japan高清日本乱xxxxx| 一区二区三区高清在线| 朝桐光av在线一区二区三区| 久久精品视频99| 成人在线视频国产| 可以免费看的黄色网址| 国产一区二区三区免费观看| 欧洲第一无人区观看| 91精品国产综合久久久久久| 黄网址在线观看| 91色中文字幕| 欧美国产专区| 稀缺呦国内精品呦| 亚洲图片一区二区| 狠狠综合久久av一区二区| 97婷婷大伊香蕉精品视频| 精品欧美午夜寂寞影院| 久久免费视频3| 久久九九全国免费| 在线视频播放大全| 毛片精品免费在线观看| 中文无码日韩欧| 日韩伦理在线免费观看| 91麻豆.com| 人妻中文字幕一区二区三区| 日韩视频在线一区| 伊人久久影院| 91免费视频网站在线观看| 国产日产亚洲精品系列| 97超碰人人模人人人爽人人爱| 欧美大片网站在线观看| 日韩在线影视| 久久黄色片网站| 亚洲综合免费观看高清完整版在线 | 亚洲一区二区三区高清视频| 久久精品小视频| 美女av一区| 在线黄色免费观看| 一区二区三区在线视频免费| 视频三区在线观看| 国产有码在线一区二区视频| 韩国在线视频一区| 久久视频精品在线观看| 欧美一区午夜精品| 午夜影视一区二区三区| 亚洲成人自拍视频| 国产91精品露脸国语对白| 亚洲成熟少妇视频在线观看| 日韩在线小视频| 欧美91在线| 婷婷免费在线观看| 亚洲成av人片在线| 亚洲成人三级| 国产免费一区二区| 久久国产精品色| 中日韩黄色大片| 久久视频在线看| 一道本一区二区三区| 日韩高清在线一区二区| 91黄色小视频| yellow字幕网在线| youjizz.com亚洲| 久久一区二区视频| 国产黄色大片网站| 国产精品免费电影|