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

通過檢索增強生成(RAG) 增強LLM的實戰演練

譯文
人工智能
本文主要介紹如何通過檢索增強生成(RAG)增強LLM,并使用LlamaIndex和LangChain作為數據場景,將應用程序部署到Heroku。

想了解更多AIGC的內容,請訪問:

51CTO AI.x社區

http://www.jxzklqfsx.com/aigc/

擁有正確的數據來支持用例對于在任何業務中成功采用大型語言模型(LLM)都是至關重要的。雖然大多數現成的LLM在完成一般任務上表現出色,但它們在處理特定的業務問題時可能會遇到困難。它們沒有針對開發人員的業務問題進行數據訓練,因此沒有足夠的場景來解決問題。

企業通常擁有大量的內部數據和文檔,可以滿足特定場景的需求。但是有一個問題:如何將所有這些有用的數據(場景)集成到LLM中,而不需要進行資源密集型和耗時的再培訓或微調LLM?

其答案是檢索增強生成(RAG),這是一種通過實時檢索緊密場景信息來增強LLM的技術。

本文將介紹如何使用LlamaIndex和LangChain來實現LLM場景數據的存儲和檢索。將通過使用LlamaIndex解決一個特定于場景的RAG問題,然后將解決方案輕松地部署到Heroku。

在開始編碼之前,首先簡要介紹一下核心概念。

RAG和LlamaIndex簡介

當向LLM提出一個需要場景來回答的問題時,RAG會檢索場景數據幫助LLM給出更準確、更具體的回答。這就像讓廚師迅速前往農貿市場去采購儲藏室沒有的最新鮮的食材一樣,這樣廚師長就可以采用所有必要的食材烹制出完美的菜肴。

RAG工作流如何提供場景的一個關鍵是使用矢量數據庫和矢量搜索索引。以下了解一些核心概念以及實現這一切所包含的內容。

  • 向量是一組編碼數字,表示一段文本(例如單詞、短語、句子,甚至整個文檔)的含義和場景。
  • 嵌入是向量中的實際數值,但大多數人傾向于交替使用 “向量”和“嵌入”這兩個術語。
  • 已經在文檔上訓練了嵌入模型,以便它可以將新輸入的文本轉換為向量。并非所有的文本都以相同的方式談論相同的事情——考慮學術研究論文與營銷材料的不同。因此,有不同的嵌入模型——每個模型都在特定的數據集上訓練,并且考慮特定的目標。
  • 使用嵌入模型,可以從文檔中創建嵌入,將這些文檔中的文本分解為編碼數字。創建嵌入可能涉及到文檔分塊這樣的策略,它將大文檔分成更小的、可管理的部分。從那里,每個塊被轉換成一個嵌入。
  • 當查詢一個向量數據庫時,其問題被轉換成一個嵌入,并與存儲在矢量數據庫中的所有其他嵌入進行比較。
  • 當建立一個向量搜索索引,可以執行非常快速和準確的向量搜索(也稱為相似性搜索)。使用矢量數據庫可以執行快速而準確的搜索——不僅僅是像在傳統數據庫中那樣匹配特定字符串的存在,而且還可以匹配與使用的單詞在意義上相似的文檔。

在RAG場景中,使用原始提示符對矢量數據庫中的所有文檔執行矢量搜索。然后,將這些匹配的文檔作為場景發送到LLM應用程序。LLM現在有一組詳細的注釋,在對原始提示進行回答時可以參考。

LlamaIndex是一個關鍵的框架,它簡化了集成、組織和檢索私有或專用數據的過程。它將幫助開發人員創建文檔嵌入和矢量搜索索引。然后,將依靠LangChain將其拼湊在一起,執行相似性搜索并將結果發送到LLM以獲取響應。LlamaIndex和LangChain共同為處理RAG工作流提供了一個安全可靠的解決方案。

準備好做些什么了嗎?現在開始吧!

演示項目簡介

使用LlamaIndex和Heroku學習RAG的最好方法是構建一個小型的示例應用程序。出于開發人員的目的,假設正在與“古登堡計劃”(Project Gutenberg)合作,這是一個擁有70000多本免費電子書的圖書館。如果想要構建一個基于LLM的聊天機器人,它可以回答關于項目中免費書籍的特定問題。

這是使用RAG的完美用例,可以使用LlamaIndex獲得的大量書籍文本。為了使項目簡單,將使用公元401年問世的《圣奧古斯丁的懺悔錄》書中的內容。

完成的項目代碼庫可以在這個GitHub存儲庫(https://github.com/alvinslee/llamaindex-gutenberg-demo)中找到。如果愿意的話,可以克隆repo并將應用程序部署到Heroku。或者,可以逐步了解如何獲得代碼。

構建這個演示項目將遵循以下一些步驟:

  • 設置項目。
  • 加載數據。
  • 構建索引。
  • 存儲索引。
  • 集成LangChain。
  • 部署到Heroku。

步驟1:設置項目

為Python項目創建一個新文件夾,然后激活venv并安裝需要的初始依賴項。

Shell 
1 (venv) ~/project$ pip install llama-index langchain langchain-openai

接下來,將加載要索引的數據。

步驟2:加載數據

在構建用于RAG的內部數據索引時,必須將所有數據(文本)收集到一個地方。在這個例子中,該項目采用了《圣奧古斯丁的懺悔錄》的文本。將使用LlamaIndex將這個場景轉換為嵌入的矢量索引。

在典型的用例中,其場景數據將是適合試圖解決的業務問題的大型文本語料庫。

對于這個小型演示項目,將創建一個名為data的子文件夾,然后將該書作為單個文件下載到該文件夾中。

Shell 
1(venv) ~/project$ mkdir data
2
3 (venv) ~/project$ curl \
4           https://www.gutenberg.org/cache/epub/3296/pg3296.txt \
5              -o data/confessions.txt
6
7
8 (venv) ~/project$ ls data
9  confessions.txt

步驟3:構建索引

在一個目錄中收集了所有數據之后,就可以構建索引了。將編寫一個簡單的Python應用程序,它將使用LlamaIndex為數據建立索引,然后查詢索引。

為此,需要一個OpenAI帳戶和API密鑰。這是因為LlamaIndex使用OpenAI的text-embedding-3-small作為默認嵌入模型 (更改這些默認值超出了本文的討論范圍) 。

在這個項目的根文件夾中,創建了一個名為index.py的文件。初始內容如下所示:

Python 
1 # index.py
2
3 from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
4 import os
5
6 if os.environ.get('OPENAI_API_KEY') is None:
7  exit('You must provide an OPENAI_API_KEY env var.')
8
9 documents = SimpleDirectoryReader("data").load_data()
10 index = VectorStoreIndex.from_documents(documents)
11
12 query_engine = index.as_query_engine()
13 response = query_engine.query("In which city is Saint Augustine the Bishop?")
14 print(response)

運行文件并收到預期的響應:

Shell 
1 (venv) ~/project$ OPENAI_API_KEY=sk-******** python index.py
2 Hippo

當然,可以再次檢查數據。看看這本書的前幾行,可以看到:

Shell 
1 THE CONFESSIONS OF SAINT AUGUSTINE
2
3 By Saint Augustine
4
5 Bishop of Hippo

正如人們所看到的,LlamaIndex完成了它的工作。Python應用程序完全按照開發人員對向量索引數據的期望回答了問題。

步驟4:存儲索引

需要注意的是,在上面的示例中,只將索引數據存儲在內存中,而不是磁盤上。索引(現在是內存中的一系列向量嵌入)將在調用OpenAI模型并完成工作流后完全丟失。

為文本創建向量索引(嵌入)不是免費的,所以不想每次調用模型時都重新計算這些結果。最好有一個單獨的工作流將索引持久化到磁盤。然后,可以在任何時候引用它。

一種常見的方法是將嵌入存儲在PostgreSQL數據庫中,并使用pgvector執行相似性搜索。為了使演示簡單,只將索引數據存儲為平面文件。

因此,將這個簡單的步驟添加到index.py文件中:

Python 
1 PERSIST_DIR='./my_vector_indexes/gutenberg/'
2 index.storage_context.persist(persist_dir=PERSIST_DIR)

現在,在運行文件之后,可以檢查存儲的索引。

Shell 
1 (venv) ~/project$ OPENAI_API_KEY=sk-******** python index.py
2 Hippo
3
4 (venv) ~/project$ tree
5 .
6├── data
7│   └── confessions.txt
8├── index.py
9└── my_vector_indexes
10    └── gutenberg
11        ├── default__vector_store.json
12        ├── docstore.json
13        ├── graph_store.json
14        ├── image__vector_store.json
15        └── index_store.json
16
17 3 directories, 7 files

步驟5:整合LangChain

已經了解矢量索引存儲的基礎知識,以及構建一個矢量索引存儲是多么容易。但是,為了真正構建一個將所有內容鏈接在一起的端到端應用程序,可以使用LangChain。這樣,就可以將解決方案部署為API。可以重寫index.py代碼,使其更適合生產環境。

以下將展示代碼,然后解釋接下來要做的事情。它可能看起來像很多代碼,但只添加了一些新步驟。

Python 
1 # index.py
2
3 import os
4 from langchain_openai import ChatOpenAI
5 from langchain.chains import ConversationalRetrievalChain
6 from langchain.memory import ConversationBufferWindowMemory
7 from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
8 from langchain_community.retrievers import LlamaIndexRetriever
9 from fastapi import FastAPI
10 from pydantic import BaseModel
11
12 if os.environ.get('OPENAI_API_KEY') is None:
13  exit('You must provide an OPENAI_API_KEY env var.')
14
15 documents = SimpleDirectoryReader("data").load_data()
16 index = VectorStoreIndex.from_documents(documents)
17
18 # For this demo, we will not persist the index.
19
20
21 retriever = LlamaIndexRetriever(index=index.as_query_engine())
22
23 llm = ChatOpenAI(model_name="gpt-3.5-turbo", max_tokens=2048)
24
25 memory = ConversationBufferWindowMemory(
26  memory_key='chat_history',
27  return_messages=True,
28  k=3
29 )
30
31 conversation = ConversationalRetrievalChain.from_llm(
32  llm=llm, 
33  retriever=retriever,
34  memory=memory,
35  max_tokens_limit=1536  
36 )
37
38 class Prompt(BaseModel):
39  question: str
40
41 app = FastAPI()
42
43 @app.post("/prompt")
44 async def query_chatbot(prompt: Prompt):
45  response = conversation.invoke({'question': prompt.question})
46  return response['answer']
47
48 if __name__=='__main__':
49  import uvicorn
50  uvicorn.run(app, host="localhost", port=8000)

首先,要注意的是,現在直接使用了LangChain和OpenAI。將LLM與一些內存一起設置,以便在后續查詢中“記住”對話。現在有一個真正的聊天機器人,可以與之互動。

從這里,使用FastAPI創建一個API服務器,該服務器監聽/prompt端點上的POST請求。對該端點的請求預計具有帶有問題的請求體,然后將其(連同來自向量索引的場景)傳遞給LLM。

使用uvicorn在端口8000上啟動服務器。

在啟動服務器之前,添加這些新的Python依賴項:

Shell 
1(venv) ~/project$ pip install fastapi pydantic uvicorn

現在是測試的時候了。首先啟動服務器。

Shell 
1 (venv) ~/project$ OPENAI_API_KEY=sk-******** python index.py
2INFO:     Started server process [1101807]
3 INFO:     Waiting for application startup.
4 INFO:     Application startup complete.
5 INFO:     Uvicorn running on http://localhost:8000 (Press CTRL+C to quit)

在另一個終端中,向端點發送一個curl請求。

Shell 
1 $ curl -X POST \
2       --header "Content-type:application/json" \
3       --data '{"question":"Who is Ambrose?"}' \
4       http://localhost:8000/prompt
5
6
7 "Ambrose is a person mentioned in the text provided. He is described as a respected
8 and celibate man who was esteemed by the author. Ambrose is depicted as a figure of
9 great honor and excellence, particularly known for his dedication to reading and
10 studying."
11

獲得成功!向量索引似乎已經啟動并運行,這個聊天機器人功能齊全,是部署的時候了。

步驟6:部署到Heroku

在完成了主要的工作之后,只需要采取幾個簡單的步驟將應用程序部署到Heroku。

(1)用Python依賴項創建requirements.txt文件

Heroku需要知道在構建項目時要安裝哪些Python依賴項。它在一個名為requirements.txt的文件中查找這個列表。可以用下面的命令輕松地生成:

Shell 
1(venv) ~/project$ pip freeze > requirements.txt

(2)創建Procfile

還需要告訴Heroku如何啟動Python應用程序。在一個名為Procfile的文件中執行這一操作。

Shell 
1 (venv) ~/project$ echo \
2                 'web: uvicorn index:app --host=0.0.0.0 --port=${PORT}' > Procfile

(3)創建runtime.txt文件

最后,runtime.txt將告訴Heroku希望使用哪種Python運行時版本。

Shell 
1 (venv) ~/project$ echo 'python-3.11.8' > runtime.txt

這些都是需要的文件。這時項目文件夾結構應該看起來像(已經刪除了持久化的矢量索引):

Shell 
1 ~/project$ tree
2 .
3├── data
4│   └── confessions.txt
5├── index.py
6├── Procfile
7├── requirements.txt
8└── runtime.txt
9
10 1 directory, 5 files

如果開發人員是從頭開始工作,并且沒有為這個演示項目克隆GitHub倉庫,那么將這些文件提交到自己的Git存儲庫。

(4)創建Heroku應用程序

下載并安裝Heroku CLI后,執行如下命令。開發人員可以為其應用程序選擇任何名字,需要提供唯一的OpenAI API密鑰。

Shell 
1 ~/project$ heroku login
2
3 ~/project$ heroku apps:create my-llamaindex-app
4
5 ~/project$ heroku git:remote -a my-llamaindex-app
6
7 ~/project$ heroku config:add OPENAI_API_KEY=replaceme -a my-llamaindex-app
8
9 ~/project$ git push heroku main
10 …
11 remote: -----> Building on the Heroku-22 stack
12 remote: -----> Determining which buildpack to use for this app
13 remote: -----> Python app detected
14 remote: -----> Using Python version specified in runtime.txt
15 …
16 remote: -----> Launching...
17 remote:        Released v4
18 remote:        https://my-llamaindex-app-6b48faa3ee6a.herokuapp.com/ deployed to Heroku
19

部署應用程序后,通過向API服務器發送curl請求進行測試:

Shell 
1 $ curl -X POST \
2       --header "Content-type:application/json" \
3       --data '{"question":"Who is Ambrose?"}' \
4       https://my-llamaindex-app-6b48faa3ee6a.herokuapp.com/prompt
5
6 "Ambrose is a significant figure in the text provided. He is being described as a
7 respected and happy man, known for his celibacy and his dedication to reading and
8 studying. He is referred to as a holy oracle and a person of great influence and
9 wisdom."
10

需要記住的是,上面的curl調用在部署中使用了唯一的Heroku應用URL。

現在已經在Heroku上運行了!

結論

現在已經清楚地了解了LlamaIndex的強大功能,以及它在構建RAG應用程序與LLM交互時所扮演的重要角色。當可以很容易地添加特定的數據源作為LLM的場景,而不需采用成本昂貴的模型再訓練時,這是一個巨大的勝利。而對于希望進一步推進LLM工作流程的公司和開發人員來說,這也是一個勝利。

將LlamaIndex與其他LangChain工具集結合起來也是無縫且直接的,構建聊天機器人只需要幾行額外的代碼。最后,能夠快速輕松地將解決方案部署到Heroku,使應用程序可以立即訪問,而不會有任何麻煩。像這樣的簡單部署使開發人員能夠專注于構建基于LLM的解決方案這一更復雜、更重要的任務。

原文標題:How To Implement RAG: A Simple Walkthrough,作者:Alvin Lee

鏈接:https://dzone.com/articles/how-to-implement-rag-a-simple-walkthrough。

想了解更多AIGC的內容,請訪問:

51CTO AI.x社區

http://www.jxzklqfsx.com/aigc/

責任編輯:姜華 來源: 51CTO內容精選
相關推薦

2023-10-14 17:46:17

RAG提示工程GPT-3

2025-02-11 08:00:00

大語言模型檢索增強生成CAG

2025-04-01 09:25:09

2025-04-29 08:20:51

2024-05-28 09:24:32

2024-02-18 09:00:00

RAG工具LlamaIndexChatGPT

2025-05-28 01:25:00

RAG人工智能語言模型

2024-10-31 14:46:31

2024-11-19 13:05:40

2025-09-01 07:02:48

2025-06-13 02:25:00

2025-09-28 04:22:00

RAGSpring AI人工智能

2024-04-19 09:00:01

映射算法大型語言模型LLM

2024-09-05 08:24:09

2025-02-13 09:01:03

2025-02-27 10:55:44

2023-10-31 16:37:55

大型語言模型人工智能

2025-04-27 00:30:00

RAG檢索增強生成AI

2024-04-30 16:17:34

RAGLLM
點贊
收藏

51CTO技術棧公眾號

亚洲色图网站| 唐人社导航福利精品| 成人一区二区在线观看| 97视频免费看| 欧洲av一区二区三区| 欧美视频精品| 亚洲综合精品久久| 任我爽在线视频精品一| 一级黄色片在线播放| 亚洲黄色高清| 中文字幕亚洲欧美日韩2019| 丰满人妻一区二区三区大胸| 自拍视频在线看| 亚洲日本va午夜在线影院| 韩国一区二区三区美女美女秀| 探花国产精品一区二区| 极品少妇一区二区三区| 在线电影av不卡网址| 中文字幕第九页| 国产精品伦一区二区| 亚洲成人综合视频| 亚洲高清在线观看一区| 无码精品视频一区二区三区| 精品中文字幕一区二区小辣椒| 久久久久久久国产精品| 99久久精品久久亚洲精品| 久久综合社区| 精品人在线二区三区| 99热一区二区| 小黄鸭精品aⅴ导航网站入口| 一区二区高清视频在线观看| 欧美大陆一区二区| 亚洲精品无amm毛片| 久久国产尿小便嘘嘘| 人人爽久久涩噜噜噜网站| 久久久久亚洲av片无码下载蜜桃| 日产午夜精品一线二线三线| 亚洲精品永久免费精品| 精品国产乱码久久久久夜深人妻| 欧美另类激情| 欧美中文一区二区三区| 欧美日本视频在线观看| 毛片在线导航| 一区二区三区中文在线| 在线观看日韩片| 黄色毛片在线观看| 26uuu国产一区二区三区| 电影午夜精品一区二区三区| 国产肥老妇视频| 激情综合网最新| 成人免费观看网址| 国产精品无码白浆高潮| 久久99精品国产91久久来源| 亚洲国产影院| 午夜激情一区二区| 国产精品一线二线三线| 青草影视电视剧免费播放在线观看| 国产精品久久久久精k8| 一区二区三区四区免费视频| 午夜免费播放观看在线视频| 欧美国产一区二区在线观看 | 中文字幕精品无| 亚洲一区二区网站| 日韩av男人的天堂| 青娱乐在线免费视频| 日本网站在线观看一区二区三区 | 久久久久国色av免费看影院| 欧美亚洲免费高清在线观看| 黄色片免费在线| 国产精品视频你懂的| 尤物国产精品| 四虎影视成人| 狠狠色狠狠色综合日日小说| www.日日操| 深夜福利亚洲| 精品久久久久久综合日本欧美| 夜夜嗨av一区二区三区四区| 妞干网在线免费视频| 成人免费av电影| 制服.丝袜.亚洲.另类.中文| 色欲欲www成人网站| 久久av国产紧身裤| 亚洲欧美在线一区| 性生交大片免费全黄| 激情久久久久久| 国产91免费看片| 91精品国产乱码久久久久| 国产成人午夜高潮毛片| 蜜桃在线一区二区三区精品| 天堂аⅴ在线地址8| 亚洲女同一区二区| 欧美 日韩 国产一区| 国产亚洲精彩久久| 精品日韩在线一区| a级片在线观看| 欧美日韩网站| 国产成人极品视频| www三级免费| 国产女主播一区| 国产精品国三级国产av| 日韩天堂在线| 欧美mv日韩mv亚洲| 天堂av网手机版| 91久久亚洲| 91久久精品美女| 成人性生交xxxxx网站| 日本三级理论片| 久久9热精品视频| 久久偷看各类wc女厕嘘嘘偷窃 | 国产精品美女久久久久高潮| 久久这里只有精品18| 成人mm视频在线观看| 亚洲变态欧美另类捆绑| 懂色av粉嫩av蜜臀av一区二区三区| 黄色成人精品网站| 国产区精品视频| 嫩草精品影院| 亚洲高清在线精品| 日本一二三区在线| 精品国产乱码久久久| 久久久噜噜噜久久久| 国产又黄又粗又硬| 国产日韩一级二级三级| 日日摸日日碰夜夜爽无码| 国产日韩在线观看视频| 夜夜嗨av色综合久久久综合网| 久久狠狠高潮亚洲精品| 国产激情精品久久久第一区二区| 亚洲一区二区三区精品在线观看 | 在线播放日本| 色婷婷久久久久swag精品 | 牲欧美videos精品| 欧美国产日韩一区二区| 99在线免费观看视频| 中文字幕一区二区三区人妻四季| 99精品视频一区| 免费在线看黄色片| 日韩08精品| 美女av一区二区| 国产精品久久久久久久免费看| 国产精品久久看| 香蕉视频禁止18| 国产亚洲一区二区三区不卡| 26uuu日韩精品一区二区| 手机在线精品视频| 亚洲成av人影院在线观看网| 扒开伸进免费视频| 韩国av一区| 国产精品乱子乱xxxx| 成人免费一区二区三区牛牛| 日韩女优制服丝袜电影| 九九视频在线免费观看| 国产高清成人在线| 欧美黑人在线观看| 国产精品高潮呻吟久久久久 | 蜜桃视频在线观看免费视频| 亚洲国产精品久久久久| 日本网站在线免费观看| 不卡av在线免费观看| 日韩少妇内射免费播放| 亚洲丝袜啪啪| 国产精品免费电影| 麻豆91在线| 亚洲一级高清| 日韩精品中文字幕视频在线| 国产午夜性春猛交ⅹxxx| 久久久高清一区二区三区| 黄色成人免费看| 国产精品精品国产一区二区| 亚洲一区二区三区久久| 大黄网站在线观看| 国产视频久久网| 免费在线观看av的网站| 最新国产精品久久精品| 无码国产69精品久久久久网站| 亚洲欧美bt| 亚洲一卡二卡三卡| youjizz亚洲| 日本成人黄色片| 蜜桃视频网站在线观看| 亚洲电影天堂av| 波多野结衣高清视频| 亚洲人成小说网站色在线 | 欧美日韩国产第一页| 五月婷婷丁香网| 欧美日韩国产大片| 久久艹精品视频| 国产人成一区二区三区影院| 日本高清一区二区视频| 99热这里只有精品8| 亚洲国产精品久久久久婷婷老年| 日韩在线观看中文字幕| 69av在线视频| 麻豆最新免费在线视频| 亚洲国产精品热久久| 亚洲中文一区二区三区| 亚洲福利电影网| 精品女人久久久| 99精品视频免费在线观看| 三上悠亚在线一区| 99国产精品久久久久久久| 婷婷精品国产一区二区三区日韩| 韩国一区二区三区视频| 国产成人综合精品| wwww亚洲| 草民午夜欧美限制a级福利片| 特黄视频在线观看| 欧美精品国产精品| 天天干天天干天天干天天| 国产精品国产三级国产普通话99| 久久性爱视频网站| 国产精品亚洲午夜一区二区三区 | 高清在线一区二区| 国产精品成人免费视频| 黄页网站大全在线免费观看| 日韩中文在线中文网在线观看| 午夜视频免费看| 日韩欧美中文一区| 怡红院成永久免费人全部视频| 精品久久久久久电影| 欧美日韩一级在线观看| 国产精品欧美久久久久无广告 | 天堂在线资源8| 91精品国产入口| 免费在线不卡av| 色中色一区二区| 亚洲免费激情视频| 亚洲国产精品一区二区www在线| 成人涩涩小片视频日本| 国产精品卡一卡二| 中文字幕免费在线看线人动作大片| 成人黄页在线观看| 又大又长粗又爽又黄少妇视频| 九九热在线视频观看这里只有精品| av天堂永久资源网| 一区二区91| 高清在线观看免费| 国产欧美综合一区二区三区| 国产av人人夜夜澡人人爽麻豆| 午夜日韩在线| www.avtt| 一区视频在线看| 日韩av高清在线看片| 亚洲大胆av| 加勒比成人在线| 在线精品一区二区| 日本日本19xxxⅹhd乱影响| 99视频精品| 精品国产免费av| 性色一区二区三区| 黄色国产精品视频| 久久久亚洲人| 第四色婷婷基地| 麻豆精品在线视频| 在线观看av免费观看| 国产一区二区日韩精品| 日韩av成人网| 成人黄色av电影| 国精产品一区一区三区免费视频 | 黑人精品欧美一区二区蜜桃| 色播五月综合网| 国产老妇另类xxxxx| 91精品国产高清91久久久久久 | 麻豆91精品91久久久| 亚洲丶国产丶欧美一区二区三区| 日本特黄一级片| 色视频成人在线观看免| 真实的国产乱xxxx在线91| 欧美精品久久一区| 高h调教冰块play男男双性文| 亚洲丁香久久久| 精品电影在线| 久久久精品国产亚洲| 欧美人与性动交α欧美精品济南到 | 亚洲午夜精品久久久久久app| 国产毛片视频网站| 日本不卡视频在线观看| 午夜福利123| 本田岬高潮一区二区三区| 性高潮久久久久久久| 亚洲视频一区在线观看| 国产成人在线观看网站| 欧美影视一区二区三区| 精品国产乱码一区二区三| 精品网站999www| 免费大片黄在线观看视频网站| 欧美精品video| 成人黄色视屏网站| 99久久精品免费看国产四区| 亚洲性视频大全| 欧美 另类 交| 久久一区二区三区超碰国产精品| 国产无色aaa| 久久中文字幕电影| 欧美性x x x| 在线免费精品视频| 性一交一乱一透一a级| 亚洲人免费视频| 调教一区二区| 国产精品日韩久久久久| 精品素人av| 丰满女人性猛交| 欧美亚洲自偷自偷| avtt中文字幕| 国产精品入口麻豆原神| 五月天综合激情| 日韩视频免费观看高清完整版在线观看| 三级视频在线| 久久久久久国产精品三级玉女聊斋| 国内欧美日韩| 欧洲亚洲一区二区三区四区五区| 狠狠噜噜久久| 亚洲黄色av片| 国产欧美精品在线观看| www..com国产| 欧美大胆人体bbbb| 欧美13一16娇小xxxx| 国产精品av免费在线观看| 国产96在线亚洲| 亚洲高潮无码久久| 久久99精品一区二区三区| 蜜桃传媒一区二区亚洲| 欧美色videos| 日韩一级片免费看| 久久久久久久久国产精品| 国产精品久久免费视频| 中文字幕一区二区三区有限公司| 久久久久久色| 六月婷婷七月丁香| 欧美日韩国产黄| 欧美77777| 久久久久中文字幕| 国内精品国产成人国产三级粉色| 在线观看污视频| 国产成人啪午夜精品网站男同| 色婷婷粉嫩av| 69堂亚洲精品首页| 麻豆网站在线| 91视频-88av| 中文在线播放一区二区| 一级 黄 色 片一| 亚洲视频免费观看| 国产精品一品二区三区的使用体验| 一区二区欧美日韩视频| 精品123区| 亚洲日本无吗高清不卡| 久久国产精品72免费观看| 国产第一页精品| 欧美精品乱人伦久久久久久| 毛片在线看网站| 亚洲aⅴ日韩av电影在线观看 | 国产黄视频在线| 91免费视频大全| 免费观看日批视频| 中文字幕亚洲欧美| 久久久精品区| 国产精品国产对白熟妇| 972aa.com艺术欧美| 国产嫩bbwbbw高潮| 国产亚洲视频在线观看| 亚洲日本免费电影| 国产av熟女一区二区三区| 成人av免费观看| 欧美一级淫片免费视频黄| 中文国产成人精品久久一| 亚洲狼人在线| 国产毛片久久久久久国产毛片| 不卡大黄网站免费看| 欧美一区免费看| 日韩在线观看免费全| 一本一道久久a久久| 成人免费毛片网| 国产精品私房写真福利视频| 国产视频在线观看免费| 久久久亚洲影院| 精品国产一区二区三区av片| 亚洲欧美日韩三级| 亚洲国产成人va在线观看天堂| 欧美扣逼视频| 成人免费视频网| 国产乱码精品| 天天做夜夜爱爱爱| 亚洲国产精品福利| 日韩成人一区| 黄页免费在线观看视频| 国产精品蜜臀在线观看| 欧美77777| 国产中文欧美精品| 亚洲视频大全| 日韩福利小视频| 亚洲精品自在久久| 成人av在线播放| 日韩avxxx| 亚洲色图欧美在线| 肉丝一区二区| 91在线观看免费高清| 午夜亚洲性色福利视频| 99久久婷婷国产综合| 亚洲欧美制服另类日韩| 色悠久久久久综合先锋影音下载|