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

提升RAG檢索質量的三個高級技巧(查詢擴展、交叉編碼器重排序和嵌入適配器)

開發 前端
現介紹三種能夠有效提高檢索能力的技術,即查詢擴展(Query expansion),跨編碼器重排序(Cross-encoder re-ranking),嵌入適配器(Embedding adaptors),可以支持檢索到更多與用戶查詢密切匹配的相關文檔,從而提高生成答案的影響力。

在現成的 RAG 實施過程中,經常會出現檢索的文檔缺少完整的答案或是包含冗余信息和無關的信息,以及文檔排序不同,導致生成的答案與用戶查詢的意圖不一致。

現介紹三種能夠有效提高檢索能力的技術,即查詢擴展(Query expansion),跨編碼器重排序(Cross-encoder re-ranking),嵌入適配器(Embedding adaptors),可以支持檢索到更多與用戶查詢密切匹配的相關文檔,從而提高生成答案的影響力。

1.查詢擴展

查詢擴展是指對原始查詢進行改寫的一系列技術。有兩種常見的方法:

1) 使用生成的答案進行查詢擴展

給定輸入查詢后,這種方法首先會指示 LLM 提供一個假設答案,無論其正確性如何。然后,將查詢和生成的答案合并在一個提示中,并發送給檢索系統。

圖片圖片

這個方法的效果很好。基本目的是希望檢索到更像答案的文檔。假設答案的正確性并不重要,因為感興趣的是它的結構和表述。可以將假設答案視為一個模板,它有助于識別嵌入空間中的相關鄰域。具體可參考論文《Precise Zero-Shot Dense Retrieval without Relevance Labels【1】》

下面是用來增強發送給 RAG 的查詢的提示示例,該 RAG 負責回答有關財務報告的問題。

You are a helpful expert financial research assistant.


Provide an example answer to the given question, that might 
be found in a document like an annual report.

2)用多個相關問題擴展查詢

利用 LLM 生成 N 個與原始查詢相關的問題,然后將所有問題(加上原始查詢)發送給檢索系統。通過這種方法,可以從向量庫中檢索到更多文檔。不過,其中有些會是重復的,因此需要進行后處理來刪除它們。

圖片圖片

這種方法背后的理念是,可以擴展可能不完整或模糊的初始查詢,并納入最終可能相關和互補的相關方面。

下面是用來生成相關問題的提示:

You are a helpful expert financial research assistant. 
Your users are asking questions about an annual report.
Suggest up to five additional related questions to help them 
find the information they need, for the provided question.
Suggest only short questions without compound sentences. 
Suggest a variety of questions that cover different aspects of the topic.
Make sure they are complete questions, and that they are related to 
the original question.
Output one question per line. Do not number the questions.

具體可參考論文《Query Expansion by Prompting Large Language Models【2】》。

上述方法有一個缺點就是會得到很多的文檔,這些文檔可能會分散 LLM 的注意力,使其無法生成有用的答案。這時候需要對文檔進行重排序,去除相關性不高的文檔。

2.交叉編碼器重排序

這種方法會根據輸入查詢與檢索到的文檔的相關性的分數對文檔進行重排序。為了計算這個分數,將會使用到交叉編碼器。

圖片

交叉編碼器是一種深度神經網絡,它將兩個輸入序列作為一個輸入進行處理。這樣,模型就能直接比較和對比輸入,以更綜合、更細致的方式理解它們之間的關系。

圖片圖片

交叉編碼器可用于信息檢索:給定一個查詢,用所有檢索到的文檔對其進行編碼。然后,將它們按遞減順序排列。得分高的文檔就是最相關的文檔。

詳情請參見 SBERT.net Retrieve & Re-rank【3】。

圖片圖片

下面介紹如何使用交叉編碼器快速開始重新排序:

pip install -U sentence-transformers


#導入交叉編碼器并加載
from sentence_transformers import CrossEncoder 
cross_encoder = CrossEncoder("cross-encoder/ms-marco-MiniLM-L-6-v2")
#對每一對(查詢、文檔)進行評分
pairs = [[query, doc] for doc in retrieved_documents] 
scores = cross_encoder.predict(pairs) 


print("Scores:") for score in scores:     
print(score)  


# Scores: 
# 0.98693466 
# 2.644579 
# -0.26802942 
# -10.73159 
# -7.7066045 
# -5.6469955 
# -4.297035 
# -10.933233 
# -7.0384283 
# -7.3246956
#重新排列文件順序:
print("New Ordering:") 
for o in np.argsort(scores)[::-1]:
    print(o+1)

交叉編碼器重新排序可與查詢擴展一起使用:在生成多個相關問題并檢索相應的文檔(比如最終有 M 個文檔)后,對它們重新排序并選出前 K 個(K < M)。這樣,就可以減少上下文的大小,同時選出最重要的部分。

3.嵌入適配器 

這是一種功能強大但使用簡單的技術,可以擴展嵌入式內容,使其更好地與用戶的任務保持一致,利用用戶對檢索文檔相關性的反饋來訓練適配器。

適配器是全面微調預訓練模型的一種輕量級替代方法。目前,適配器是以小型前饋神經網絡的形式實現的,插入到預訓練模型的層之間。訓練適配器的根本目的是改變嵌入查詢,從而為特定任務產生更好的檢索結果。嵌入適配器是在嵌入階段之后、檢索之前插入的一個階段。可以把它想象成一個矩陣(帶有經過訓練的權重),它采用原始嵌入并對其進行縮放。

圖片圖片

以下是訓練步驟:

1)準備訓練數據

要訓練嵌入適配器,需要一些關于文檔相關性的訓練數據。這些數據可以是人工標注的,也可以由 LLM 生成。這些數據必須包括(查詢、文檔)的元組及其相應的標簽(如果文檔與查詢相關,則為 1,否則為-1)。為簡單起見,將創建一個合成數據集,但在現實世界中,需要設計一種收集用戶反饋的方法(比如,讓用戶對界面上的文檔相關性進行評分)。

為了創建一些訓練數據,首先可利用LLM生成財務分析師在分析財務報告時可能會提出的問題樣本。

import os
import openai
from openai import OpenAI


from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())
openai.api_key = os.environ['OPENAI_API_KEY']


PROMPT_DATASET = """
You are a helpful expert financial research assistant. 
You help users analyze financial statements to better understand companies.
Suggest 10 to 15 short questions that are important to ask when analyzing 
an annual report.
Do not output any compound questions (questions with multiple sentences 
or conjunctions).
Output each question on a separate line divided by a newline.
"""


def generate_queries(model="gpt-3.5-turbo"):
    messages = [
        {
            "role": "system",
            "content": PROMPT_DATASET,
        },
    ]


    response = openai_client.chat.completions.create(
        model=model,
        messages=messages,
    )
    content = response.choices[0].message.content
    content = content.split("\n")
    return content




generated_queries = generate_queries()
for query in generated_queries:
    print(query)


# 1. What is the company's revenue growth rate over the past three years?
# 2. What are the company's total assets and total liabilities?
# 3. How much debt does the company have? Is it increasing or decreasing?
# 4. What is the company's profit margin? Is it improving or declining?
# 5. What are the company's cash flow from operations, investing, and financing activities?
# 6. What are the company's major sources of revenue?
# 7. Does the company have any pending litigation or legal issues?
# 8. What is the company's market share compared to its competitors?
# 9. How much cash does the company have on hand?
# 10. Are there any major changes in the company's executive team or board of directors?
# 11. What is the company's dividend history and policy?
# 12. Are there any related party transactions?
# 13. What are the company's major risks and uncertainties?
# 14. What is the company's current ratio and quick ratio?
# 15. How has the company's stock price performed over the past year?

然后,為每個生成的問題檢索文檔。為此,將查詢一個 Chroma 集合,在該集合中,以前索引過一份財務報告。

results = chroma_collection.query(query_texts=generated_queries, n_results=10, include=['documents', 'embeddings'])
retrieved_documents = results['documents']

再次使用 LLM 評估每個問題與相應文檔的相關性:

PROMPT_EVALUATION = """
You are a helpful expert financial research assistant. 
You help users analyze financial statements to better understand companies.
For the given query, evaluate whether the following satement is relevant.
Output only 'yes' or 'no'.
"""


def evaluate_results(query, statement, model="gpt-3.5-turbo"):
    messages = [
    {
        "role": "system",
        "content": PROMPT_EVALUATION,
    },
    {
        "role": "user",
        "content": f"Query: {query}, Statement: {statement}"
    }
    ]


    response = openai_client.chat.completions.create(
        model=model,
        messages=messages,
        max_tokens=1
    )
    content = response.choices[0].message.content
    if content == "yes":
        return 1
    return -1

然后,將訓練數據結構化為問答元組。每個元組將包含查詢的嵌入、文檔的嵌入和評估標簽(1,-1)。

retrieved_embeddings = results['embeddings']
query_embeddings = embedding_function(generated_queries)


adapter_query_embeddings = []
adapter_doc_embeddings = []
adapter_labels = []


for q, query in enumerate(tqdm(generated_queries)):
    for d, document in enumerate(retrieved_documents[q]):
        adapter_query_embeddings.append(query_embeddings[q])
        adapter_doc_embeddings.append(retrieved_embeddings[q][d])
        adapter_labels.append(evaluate_results(query, document))

最后,生成完訓練元組后,將其放入torch數據集,為訓練做準備。

2)定義模型

定義了一個以查詢嵌入、文檔嵌入和適配器矩陣為輸入的函數。該函數首先將查詢嵌入與適配器矩陣相乘,然后計算該結果與文檔嵌入之間的余弦相似度。

def model(query_embedding, document_embedding, adaptor_matrix):
    updated_query_embedding = torch.matmul(adaptor_matrix, query_embedding)
    return torch.cosine_similarity(updated_query_embedding, document_embedding, dim=0)

3)定義損失(loss)

目標是最小化前一個函數計算出的余弦相似度。為此,將使用均方誤差(MSE)損失來優化適配器矩陣的權重。

def mse_loss(query_embedding, document_embedding, adaptor_matrix, label):
    return torch.nn.MSELoss()(model(query_embedding, document_embedding, adaptor_matrix), label)

4)訓練

初始化適配器矩陣,并完成訓練 100 次epochs。

# Initialize the adaptor matrix
mat_size = len(adapter_query_embeddings[0])
adapter_matrix = torch.randn(mat_size, mat_size, requires_grad=True)


min_loss = float('inf')
best_matrix = None
for epoch in tqdm(range(100)):
    for query_embedding, document_embedding, label in dataset:
        loss = mse_loss(query_embedding, document_embedding, adapter_matrix, label)
        if loss < min_loss:
            min_loss = loss
            best_matrix = adapter_matrix.clone().detach().numpy()
        loss.backward()
        with torch.no_grad():
            adapter_matrix -= 0.01 * adapter_matrix.grad
            adapter_matrix.grad.zero_()

訓練完成后,適配器可用于擴展原始嵌入,并適配用戶任務。

test_vector = torch.ones((mat_size,1))
scaled_vector = np.matmul(best_matrix, test_vector).numpy()
test_vector.shape
# torch.Size([384, 1])
scaled_vector.shape
# (384, 1)
best_matrix.shape
# (384, 384)

在檢索階段,只需將原始嵌入輸出與適配器矩陣相乘,然后輸入檢索系統即可。

以上三種方法操作性較強,感興趣的讀者可以將其應用到現有的RAG應用中,來評估這些手段對于自己的場景有效性。

相關鏈接:

【1】https://arxiv.org/pdf/2212.10496.pdf

【2】https://arxiv.org/pdf/2305.03653.pdf

【3】https://www.sbert.net/examples/applications/retrieve_rerank/README.html

原文來自:Ahmed Besbes:3 Advanced Document Retrieval Techniques To Improve RAG Systems

責任編輯:武曉燕 來源: AI工程化
相關推薦

2025-03-10 08:00:00

RAG檢索Reranker

2012-09-19 15:29:26

Worklight適配器

2025-04-28 09:39:40

2015-08-07 10:05:37

recyclervie超省寫法

2018-10-11 10:38:31

前端JavaScript編程語言

2023-09-02 12:49:01

2022-02-18 17:21:29

適配器模式客戶端

2020-10-25 08:56:21

適配器模式

2014-05-21 13:51:37

Hyper-V網絡性能

2014-05-22 09:54:22

流量管理Hyper-V網絡性能

2021-02-16 08:16:09

適配器模式MybatisJava

2021-08-06 06:51:16

適配器配置Spring

2022-02-13 23:33:24

設計模式Java

2011-04-28 09:54:50

jQuery

2022-06-30 09:01:00

嵌入式軟件技巧

2021-02-18 08:39:28

設計模式場景

2013-11-26 16:39:21

Android設計模式

2012-05-16 17:22:11

Java設計模式

2009-12-21 10:26:09

Oracle適配器

2009-11-18 18:08:20

PHP適配器模式
點贊
收藏

51CTO技術棧公眾號

中文字幕乱码一区二区三区| 91极品视频在线| 亚洲国产日韩欧美在线观看| 成人黄色在线电影| 99v久久综合狠狠综合久久| 国产999在线| 五月天丁香激情| 秋霞综合在线视频| 欧美日韩黄色一区二区| 性高湖久久久久久久久aaaaa| 欧美午夜黄色| 国产精品亚洲午夜一区二区三区| 欧美在线www| 青花影视在线观看免费高清| 日韩精品导航| 日韩三级电影网址| 成人中文字幕av| 国内在线免费视频| 中文幕一区二区三区久久蜜桃| 99理论电影网| 亚洲网站免费观看| 国产乱码精品| 久久久免费观看视频| 欧洲性xxxx| 丝袜久久网站| 日韩女优av电影| 精品少妇无遮挡毛片| 欧洲一区二区三区| 亚洲视频免费在线观看| 欧美精品尤物在线| 日韩在线视频免费| 国产精品18久久久| 国产精品视频免费观看www| 日日夜夜综合网| 国产精品观看| 欧美成人免费视频| 欧美日韩国产一二三区| 中文精品一区二区| 亚洲精品一区二区三区影院 | 天天插天天射天天干| 91丨精品丨国产| 欧美日韩和欧美的一区二区| 黄色一级二级三级| 中文字幕21页在线看| 亚洲影院在线观看| 一二三四中文字幕| 久做在线视频免费观看| 国产精品欧美久久久久一区二区| 九色91在线视频| 国产91免费在线观看| 国产一区二区三区精品视频| 国产精品视频99| 亚洲高清视频免费观看| 日韩综合一区二区| 日本欧美中文字幕| jizz国产在线观看| 日韩国产欧美在线播放| 国产成一区二区| 成年人视频免费| 视频一区二区三区中文字幕| 欧美又大粗又爽又黄大片视频| 日韩av电影网| 亚洲欧美网站| 国产精品99导航| 这里只有精品国产| 九一久久久久久| 亚洲精品日韩激情在线电影| aaaa一级片| 成人黄色小视频在线观看| 国产亚洲第一区| 日本中文字幕一区二区有码在线| 2021中文字幕一区亚洲| 欧美日韩综合精品| 嫩草研究院在线| 国产视频一区在线观看| 日本福利视频导航| 欧美寡妇性猛交xxx免费| 精品女厕一区二区三区| 久久久国产欧美| 亚洲18在线| 精品国产成人在线影院 | 欧美日韩不卡合集视频| 国产亚洲欧美精品久久久久久| 亚洲一级二级| 奇米4444一区二区三区| 97国产精品久久久| 处破女av一区二区| 日本在线高清视频一区| a毛片在线播放| 精品国产999| 久久99爱视频| 成人av影音| 亚洲视频第一页| 9999热视频| 亚洲欧美日韩国产综合精品二区| 国产在线拍揄自揄视频不卡99| www.久久综合| 国产偷国产偷亚洲高清人白洁| 中文字幕一区二区三区四区五区六区| 欧美大片黄色| 精品视频在线免费看| 最新日本中文字幕| 成人影视亚洲图片在线| 久久久影视精品| 伊人22222| 99国产精品一区| 黄色一级视频播放| 欧美最新精品| 亚洲成av人乱码色午夜| 国产午夜精品久久久久久久久| 亚洲成av人片一区二区密柚| 日本最新高清不卡中文字幕| 99国产精品欲| 国产精品色眯眯| 乱妇乱女熟妇熟女网站| 欧美视频二区欧美影视| 中文字幕一区二区精品| 日本一区二区免费电影| 国产成人99久久亚洲综合精品| 午夜精品区一区二区三| 午夜激情电影在线播放| 日韩免费看网站| 少妇视频在线播放| 久久一区亚洲| 精品国产综合久久| 青草av在线| 69久久夜色精品国产69蝌蚪网| 一色道久久88加勒比一| 99视频精品| 国产精品白丝jk白祙| gogogogo高清视频在线| 欧美自拍丝袜亚洲| 手机免费看av| 国产农村妇女精品一区二区| 国产在线视频欧美一区二区三区| 四季久久免费一区二区三区四区| 欧美日韩国产高清一区二区| 国产精品情侣呻吟对白视频| 日韩在线一区二区| 奇米精品在线| 欧美羞羞视频| 国产午夜精品全部视频播放| 男人天堂av在线播放| 26uuu成人网一区二区三区| 国产二区视频在线| 国产毛片久久久| 久久露脸国产精品| 污污网站免费在线观看| 亚洲第一激情av| 日本精品一二三区| 亚洲高清久久| 国产一区二区不卡视频| 99riav视频在线观看| 亚洲第一页自拍| 久久国产精品系列| 91免费国产视频网站| 97在线播放视频| 国产一区网站| 国产一区二区在线免费视频| 麻豆网站在线看| 在线播放视频一区| 欧美成人三级在线观看| aaa国产一区| aaa毛片在线观看| 欧美精选一区二区三区| 成人免费视频a| 日本在线观看大片免费视频| 日韩电影大片中文字幕| 无码人妻精品一区二| 国产精品免费aⅴ片在线观看| 香蕉视频999| 韩日成人在线| 欧美日韩喷水| 日韩五码电影| 韩剧1988免费观看全集| 六十路在线观看| 欧美日韩不卡在线| 免费一级特黄特色大片| 久久久久久久久久久99999| 奇米影视四色在线| 欧美jizzhd精品欧美巨大免费| 国产亚洲第一区| 91精品美女| 欧美日韩国产成人| 美女毛片在线看| 欧美一卡二卡三卡| 9i看片成人免费看片| 国产精品久久影院| 最新版天堂资源在线| 日韩国产欧美在线视频| 日本人妻伦在线中文字幕| 自拍亚洲一区| 96pao国产成视频永久免费| 婷婷电影在线观看| 久久成人综合视频| 亚洲av成人无码网天堂| 777a∨成人精品桃花网| wwwwww国产| 亚洲精品视频在线| 国产一区二区三区四区五区六区| 国产精品乡下勾搭老头1| 99爱视频在线| 欧美黄色一级视频| 视频在线精品一区| 精品精品国产毛片在线看| 国产精品稀缺呦系列在线| a毛片不卡免费看片| 日韩亚洲综合在线| 亚洲AV第二区国产精品| 日韩欧美国产小视频| 亚洲国产无线乱码在线观看| 亚洲一区二区三区四区在线| 久久一级免费视频| 久久久久久影视| 国产视频久久久久久| 日韩中文字幕在线观看视频| 成人动漫在线一区| 天天操狠狠操夜夜操| 噜噜噜躁狠狠躁狠狠精品视频| 欧美日韩dvd| 久久久久久美女精品 | 热久久免费国产视频| 毛片大全在线观看| 久久精品国产亚洲一区二区| 撸视在线观看免费视频| 亚洲成人xxx| www.天堂在线| 91精品福利在线一区二区三区 | 免费看特级毛片| 久久精品亚洲国产奇米99 | 国产三级一区二区三区| 久久午夜夜伦鲁鲁片| 成人午夜又粗又硬又大| 天堂网成人在线| 激情综合五月天| 免费成年人高清视频| 日本aⅴ免费视频一区二区三区 | 韩国三级在线一区| 精品久久久99| 精一区二区三区| 亚洲欧美国产中文| 美国一区二区三区在线播放| 亚洲成人av免费看| 久久最新视频| www.欧美日本| 男女视频一区二区| 亚洲最大综合网| 日韩av在线发布| 99草草国产熟女视频在线| 久久先锋资源| 在线免费视频a| 男人的天堂久久精品| 九九九九九伊人| 国产乱国产乱300精品| 97免费公开视频| 夫妻av一区二区| 图片区偷拍区小说区| 成人av电影免费观看| 噜噜噜在线视频| 国产喂奶挤奶一区二区三区| 欧美日韩中文字幕视频| 亚洲欧洲av另类| 欧美丰满艳妇bbwbbw| 亚洲成人高清在线| 亚洲 欧美 日韩 综合| 在线观看亚洲a| 国产绿帽刺激高潮对白| 精品国产污污免费网站入口 | 永久免费看mv网站入口亚洲| av资源网站在线观看| 久久成人av网站| 日本在线高清| 国产美女精彩久久| 日韩欧美一级| 久久伦理网站| 999国产精品永久免费视频app| 九一免费在线观看| 香蕉久久久久久久av网站| 久久99999| 国产一区不卡精品| 大黑人交xxx极品hd| 国产精品久久综合| 日韩免费观看一区二区| 欧美三级在线播放| 全部免费毛片在线播放一个| 国产一区二区三区视频在线观看| av免费看在线| 日本久久亚洲电影| 日韩一二三区在线观看| 欧美精品一区二区三区久久| 一区二区三区午夜探花| a√天堂在线观看| 国产乱码精品一区二区三| 国产熟妇搡bbbb搡bbbb| 亚洲欧美一区二区三区孕妇| 欧美精品一二三四区| 欧美一区日韩一区| 黄色大片在线看| 欧美极品xxxx| 日韩黄色三级在线观看| 久久久免费看| 欧美.www| www.精品在线| 26uuu久久天堂性欧美| 91成人福利视频| 欧美在线视频全部完| 无码h黄肉3d动漫在线观看| 久久综合久久88| 免费成人美女女| 国产手机精品在线| 综合一区二区三区| 国产又黄又猛又粗| 久久久久国产免费免费| 日本一二三区不卡| 日韩三级在线免费观看| www.色就是色| 99成人在线| 国产成人精品综合久久久久99 | 中文字幕一区二区三区有限公司| 免费精品视频| 男人的天堂影院| 亚洲精品国产一区二区精华液 | 欧美a级一区二区| 在线免费观看黄色小视频| 亚洲成人精品一区| 性猛交xxxx乱大交孕妇印度| 中文字幕国产亚洲| 亚洲日本在线观看视频| 久久久精品国产一区二区三区| 国产专区一区| 污视频在线观看免费网站| 亚洲国产精品成人综合| 中文字幕av第一页| 亚洲精品中文字幕有码专区| 高清毛片在线观看| 亚洲日本乱码在线观看| 国产一级在线播放| 精品国产网站在线观看| 国产区美女在线| 国产女人水真多18毛片18精品| 欧美日韩网址| 欧美熟妇精品一区二区| 一区二区三区免费在线观看| 国产www免费观看| 九九精品视频在线| av日韩精品| 欧美乱大交xxxxx潮喷l头像| 成人性生交大片免费看视频在线| 青娱乐免费在线视频| 日韩久久精品一区| 免费污视频在线| 国产日韩在线一区二区三区| 99视频一区| www.免费av| 一本大道av一区二区在线播放| 欧美女子与性| 国产精品久久久999| 日韩成人激情| 手机av在线网站| 亚洲国产精品综合小说图片区| 性插视频在线观看| 国产精品久久影院| av资源免费观看| 亚洲色在线视频| 成人免费观看49www在线观看| 日本中文字幕一级片| 北岛玲一区二区三区四区| 亚洲精品男人的天堂| 中文字幕欧美精品日韩中文字幕| 玖玖精品在线| 国产aaa免费视频| 久久久久久日产精品| 在线观看国产黄| 欧美肥老妇视频| 亚洲精品中文字幕99999| 国产成人黄色网址| 一个色在线综合| 欧洲一区av| 成人中文字幕在线观看| 99在线观看免费视频精品观看| 中文字幕在线1| 欧美一区二区日韩| 亚洲精品永久免费视频| 在线国产99| 91亚洲精品乱码久久久久久蜜桃| 制服丝袜在线一区| 久久久久久久久久久成人| 黄色不卡一区| 国产乱国产乱老熟300部视频| 色哟哟亚洲精品| 欧美午夜大胆人体| 日韩中文字幕一区| 成人美女在线观看| 伊人久久亚洲综合| 国内精品久久久久影院 日本资源| 国产成人精品999在线观看| 免费看三级黄色片| 欧美日韩日本视频| 欧美少妇精品| 欧美在线xxx|