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

如何從零開始構(gòu)建Zepto的多語言查詢解析系統(tǒng)?

譯文 精選
人工智能
Zepto公司的數(shù)據(jù)科學(xué)團隊利用LLM和RAG構(gòu)建了一個強大的系統(tǒng)來解決多語言拼寫錯誤問題。本文將從模糊查詢到修正輸出,完整復(fù)制這一端到端功能,并解釋了該技術(shù)在搜索質(zhì)量和多語言查詢解析中發(fā)揮的關(guān)鍵作用。

譯者 | 李睿

審校 | 重樓

本文介紹如何從零開始構(gòu)建Zepto的多語言查詢解析系統(tǒng),該系統(tǒng)利用LLMRAG技術(shù)處理拼寫錯誤及方言查詢問題。通過復(fù)制從模糊查詢到修正輸出的端到端流程,可以解釋這一技術(shù)在提升搜索質(zhì)量與多語言查詢處理中的核心作用。

你用過Zepto在網(wǎng)上訂購雜貨嗎?如果用過,你可能會注意到,即使寫錯單詞或拼錯商品名稱,Zepto仍然能理解并顯示想要的結(jié)果。但是,輸入“kele chips(香蕉片)而不是“banana chips”(香蕉片)的用戶則很難找到他們想要的商品。拼寫錯誤和方言查詢導(dǎo)致糟糕的用戶體驗并降低轉(zhuǎn)化率。

Zepto公司的數(shù)據(jù)科學(xué)團隊利用LLMRAG構(gòu)建了一個強大的系統(tǒng)來解決多語言拼寫錯誤問題。本文將從模糊查詢到修正輸出,完整復(fù)制這一端到端功能,并解釋了該技術(shù)在搜索質(zhì)量和多語言查詢解析中發(fā)揮的關(guān)鍵作用。

了解Zepto的系統(tǒng)

技術(shù)流程

以下了解Zepto用于其多語言查詢解析的技術(shù)流程。該流程涉及多個組件,將在后續(xù)詳細說明。

1多語言查詢解析工作流程

1追蹤了一個嘈雜的用戶查詢的完整修正過程。拼寫錯誤或方言文本進入管道;多語言嵌入模型將其轉(zhuǎn)換為密集向量。該系統(tǒng)將該向量輸入Facebook的相似性搜索引擎FAISS,該引擎返回嵌入空間中最接近的top-k個品牌和產(chǎn)品名稱。接下來,管道將嘈雜的查詢和檢索到的名稱轉(zhuǎn)發(fā)到LLM提示,LLM輸出經(jīng)過修正、干凈的查詢。Zepto部署了這個查詢解析循環(huán)來提升用戶體驗和轉(zhuǎn)化率。Zepto在處理拼寫錯誤、代碼混合短語和方言詞匯時,根據(jù)Zepto的調(diào)查,受影響查詢的轉(zhuǎn)化率提高了7.5%,這清楚地展示了技術(shù)提升日常互動的能力。

核心組件

以下介紹在這個系統(tǒng)中使用的核心概念。

1.拼寫錯誤的查詢和方言查詢

用戶經(jīng)常在查詢中使用英語和方言的混合。例如,“kele chips”(“香蕉片”),“balekayi chips”(卡納達語)等。例如“kothimbir”(馬拉地語/印地語的香菜)或泰米爾語中“paal”(牛奶)的語音輸入會導(dǎo)致傳統(tǒng)搜索失效。如果沒有規(guī)范化或音譯支持,其語義就會丟失。

2.檢索-增強生成(RAG

RAG是一個將語義檢索(向量嵌入和元數(shù)據(jù)查找)與LLM生成功能相結(jié)合的管道。Zepto在收到嘈雜、拼寫錯誤和方言查詢時,利用RAG功能檢索top-k個相關(guān)的產(chǎn)品名稱和品牌。然后,將這些最相似的檢索到的結(jié)果與嘈雜的查詢一起被饋送到LLM進行修正。

Zepto的用例中使用RAG的好處:

  • 通過提供上下文來防止幻覺,從而為LLM的應(yīng)用奠定基礎(chǔ)。
  • 提高準確性并確保相關(guān)品牌術(shù)語的修正。
  • 通過縮小上下文減少提示大小和推理成本。

3.向量數(shù)據(jù)庫

向量數(shù)據(jù)庫是一種專門用于存儲、索引單詞或句子嵌入的數(shù)據(jù)庫。這些嵌入是數(shù)據(jù)點的數(shù)字表示。這些向量數(shù)據(jù)庫用于在給定查詢時使用相似度搜索檢索高維向量。FAISS是一種開源庫,專門為高效的相似度搜索和密集向量聚類而設(shè)計。FAISS用于快速搜索多媒體文檔的相似嵌入,Zepto系統(tǒng)可以使用FAISS來存儲品牌名稱、標簽和產(chǎn)品名稱的嵌入。

4.逐步提示和JSON輸出

Zepto的流程強調(diào)模塊化的提示分解,可以將復(fù)雜的任務(wù)分解成更小的逐步任務(wù),然后有效地執(zhí)行,而不會出現(xiàn)任何錯誤,從而提高準確性。它包括檢測查詢是否拼寫錯誤或方言,修正術(shù)語,翻譯成英語規(guī)范術(shù)語,并以JSON格式輸出。

JSON模式確保了可靠性和可讀性,例如:

{ 
"original_query": "...",
 "corrected_query": "...",
 "translation": "..."
}

其系統(tǒng)提示包含幾個簡短的例子,其中包含英語和修正方言的混合,以指導(dǎo)LLM的行為。

5.內(nèi)部LLM托管

Zepto使用MetaLlama3-8B,托管在Databricks上以控制成本和提供性能。Zepto采用指令微調(diào),這是一種使用逐步提示和角色扮演指令的輕量級調(diào)優(yōu)。確保LLM僅關(guān)注提示行為,避免成本昂貴的模型重新訓(xùn)練。

6.通過用戶重新表述的隱式反饋

當推出新功能的時候,用戶反饋至關(guān)重要。Zepto用戶看到的每次快速修正和更好的結(jié)果都是有效的修復(fù)。收集這些信號以向提示添加新的示例,將新的同義詞放入檢索數(shù)據(jù)庫,并清除錯誤。ZeptoA/B測試顯示轉(zhuǎn)化率提升了7.5%

復(fù)制查詢解析系統(tǒng)

接下來,將嘗試通過定義系統(tǒng)來復(fù)制Zepto的多語言查詢解析系統(tǒng)。以下是將要使用的系統(tǒng)流程圖。

其實現(xiàn)遵循Zepto概述的相同策略:

  • 語義檢索:首先獲取用戶的原始查詢,并從整個目錄中找到top-k個潛在相關(guān)產(chǎn)品的列表。這是通過將查詢的向量嵌入與存儲在向量數(shù)據(jù)庫中的產(chǎn)品的嵌入進行比較來實現(xiàn)的。這一步驟提供了必要的上下文。
  • LLM支持的校正和選擇LLM驅(qū)動的修正與選擇:將檢索到的產(chǎn)品(上下文)和原始查詢傳遞給LLMLLM的任務(wù)不僅是修正拼寫,還需分析上下文并選擇用戶最可能想要查找的產(chǎn)品。然后,它以結(jié)構(gòu)化格式返回一個干凈的、經(jīng)過修正的查詢以及其決策背后的推理。

2 系統(tǒng)流程圖

流程

該流程可以簡化為以下3個步驟:

1.輸入和查詢

用戶輸入原始查詢,該查詢可能包含一些噪聲或使用不同的語言。Zepto系統(tǒng)直接將原始查詢嵌入到多語言嵌入中。在具有一些預(yù)定義嵌入的Chroma DB向量數(shù)據(jù)庫上執(zhí)行相似性搜索。它返回top-k個最相關(guān)的產(chǎn)品嵌入。

2.處理

檢索到top-k產(chǎn)品嵌入之后,通過高級系統(tǒng)提示將它們與嘈雜的用戶查詢一起提供給Llama3。該模型返回一個清晰的JSON,其中包含清理后的查詢、產(chǎn)品名稱、置信度評分及其推理過程,明確說明選擇該品牌的原因。確保查詢修正的透明性,可訪問LLM選擇該產(chǎn)品和品牌名稱的推理邏輯。

3.最終查詢細化和搜索

這個階段包括解析來自LLMJSON輸出,通過提取修正之后的查詢,可以根據(jù)用戶輸入的原始查詢訪問最相關(guān)的產(chǎn)品或品牌名稱。最后一個階段涉及在Vector DB上重新運行相似性搜索,以查找搜索產(chǎn)品的詳細信息。這樣,就可以實現(xiàn)多語言查詢解析系統(tǒng)。

動手實施

在了解查詢解析系統(tǒng)的工作原理之后,現(xiàn)在通過編寫代碼動手構(gòu)建這個系統(tǒng)。將逐步完成每一個事項,從安裝依賴項到最終的相似性搜索。

步驟1:安裝依賴項

首先,安裝必要的Python庫。將使用LangChain協(xié)調(diào)組件,使用langchain-groq實現(xiàn)快速LLM推理,fastembed用于高效生成嵌入,langchain-chroma用于管理向量數(shù)據(jù)庫,pandas用于處理數(shù)據(jù)。

!pip install -q pandas langchain langchain-core langchain-groq langchain-chroma fastembed langchain-community

步驟2:創(chuàng)建一個擴展和復(fù)雜的虛擬數(shù)據(jù)集

為了徹底測試系統(tǒng),需要一個反映現(xiàn)實世界挑戰(zhàn)的數(shù)據(jù)集。這個CSV包括:

  • 更多種類的產(chǎn)品(20多種)
  • 常見的品牌名稱(如可口可樂、美極)
  • 多語言和方言術(shù)語(dhaniyakandanimbu
  • 潛在歧義項(cheese spreadcheese slices)。
import pandas as pd
from io import StringIO
csv_data = """product_id,product_name,category,tags
1,Aashirvaad Select Atta 5kg,Staples,"atta, flour, gehu, aata, wheat"
2,Amul Gold Milk 1L,Dairy,"milk, doodh, paal, full cream milk"
3,Tata Salt 1kg,Staples,"salt, namak, uppu"
4,Kellogg's Corn Flakes 475g,Breakfast,"cornflakes, breakfast cereal, makkai"
5,Parle-G Gold Biscuit 1kg,Snacks,"biscuit, cookies, biscuits"
6,Cadbury Dairy Milk Silk,Chocolates,"chocolate, choco, silk, dairy milk"
7,Haldiram's Classic Banana Chips,Snacks,"kele chips, banana wafers, chips"
8,MDH Deggi Mirch Masala,Spices,"mirchi, masala, spice, red chili powder"
9,Fresh Coriander Bunch (Dhaniya),Vegetables,"coriander, dhaniya, kothimbir, cilantro"
10,Fresh Mint Leaves Bunch (Pudina),Vegetables,"mint, pudhina, pudina patta"
11,Taj Mahal Red Label Tea 500g,Beverages,"tea, chai, chaha, red label"
12,Nescafe Classic Coffee 100g,Beverages,"coffee, koffee, nescafe"
13,Onion 1kg (Kanda),Vegetables,"onion, kanda, pyaz"
14,Tomato 1kg,Vegetables,"tomato, tamatar"
15,Coca-Cola Original Taste 750ml,Beverages,"coke, coca-cola, soft drink, cold drink"
16,Maggi 2-Minute Noodles Masala,Snacks,"maggi, noodles, instant food"
17,Amul Cheese Slices 100g,Dairy,"cheese, cheese slice, paneer slice"
18,Britannia Cheese Spread 180g,Dairy,"cheese, cheese spread, creamy cheese"
19,Fresh Lemon 4pcs (Nimbu),Vegetables,"lemon, nimbu, lime"
20,Saffola Gold Edible Oil 1L,Staples,"oil, tel, cooking oil, saffola"
21,Basmati Rice 1kg,Staples,"rice, chawal, basmati"
22,Kurkure Masala Munch,Snacks,"kurkure, snacks, chips"
"""
df = pd.read_csv(StringIO(csv_data))
print("Product Catalog successfully loaded.")
df.head()

輸出:

3輸出表格

步驟3:初始化向量數(shù)據(jù)庫

將產(chǎn)品數(shù)據(jù)轉(zhuǎn)換成捕獲語義的數(shù)值表示(嵌入)。這里使用FastEmbed,因為它速度很快并且在本地運行。將這些嵌入存儲在輕量級的向量數(shù)據(jù)庫ChromaDB中。

  • 嵌入策略:為每個產(chǎn)品創(chuàng)建組合產(chǎn)品名稱、類別和標簽的文本文檔,生成豐富的描述性嵌入,這樣可以提高語義匹配成功率。
  • 嵌入模型:在這里使用BAAI/ big -small-en-v1.5模型。其“小型”版本資源高效且快速,是適合多語言任務(wù)的嵌入模型。BAAI/ big -small-en-v1.5是一個強大的英文文本嵌入模型,在某些上下文中很有用。它在涉及語義相似性和文本檢索的任務(wù)中提供了具有競爭力的性能。
import os
import json
from langchain.schema import Document
from langchain.embeddings import FastEmbedEmbeddings
from langchain_chroma import Chroma
# Create LangChain Documents
documents = [
 Document(
 page_cnotallow=f"{row['product_name']}. Category: {row['category']}. Tags: {row['tags']}",
 metadata={
 "product_id": row['product_id'],
 "product_name": row['product_name'],
 "category": row['category']
 }
 ) for _, row in df.iterrows()
]
# Initialize embedding model and vector store
embedding_model = FastEmbedEmbeddings(model_name="BAAI/bge-small-en-v1.5")
vectorstore = Chroma.from_documents(documents, embedding_model)
# The retriever will be used to fetch the top-k most similar documents
retriever = vectorstore.as_retriever(search_kwargs={"k": 5})
print("Vector database initialized and retriever is ready.")

輸出:

4向量數(shù)據(jù)庫初始化

如果看到這個小部件,那就意味著可以在本地下載BAAI/ big -small-en-v1.5

步驟4:設(shè)計高級LLM的提示

這是最關(guān)鍵的一步。這里設(shè)計了一個提示,指示LLM充當專家查詢解釋器。該提示強制LLM遵循嚴格的流程來返回結(jié)構(gòu)化JSON對象。這確保了輸出是可預(yù)測的,并且易于在應(yīng)用程序中使用。

提示的主要功能:

  • 明確的角色:LLM被告知這是一個雜貨店專家系統(tǒng)。
  • 上下文是關(guān)鍵:它必須基于檢索產(chǎn)品列表做出決策。
  • 強制JSON輸出:指示它返回具有特定模式的JSON對象:corrected_query identified_productconfidencereasoning。這對系統(tǒng)可靠性至關(guān)重要。
from langchain_groq import ChatGroq
from langchain_core.prompts import ChatPromptTemplate
# IMPORTANT: Set your Groq API key here or as an environment variable
os.environ["GROQ_API_KEY"] = "YOUR_API_KEY” # Replace with your key
llm = ChatGroq(
 temperature=0,
 model_name="llama3-8b-8192",
 model_kwargs={"response_format": {"type": "json_object"}},
)
prompt_template = """
You are a world-class search query interpretation engine for a grocery delivery service like Zepto.
Your primary goal is to understand the user's *intent*, even if their query is misspelled, in a different language, or uses slang.
Analyze the user's `RAW QUERY` and the `CONTEXT` of semantically similar products retrieved from our catalog.
Based on this, determine the most likely product the user is searching for.
**INSTRUCTIONS:**
1. Compare the `RAW QUERY` against the product names in the `CONTEXT`.
2. Identify the single best match from the `CONTEXT`.
3. Generate a clean, corrected search query for that product.
4. Provide a confidence score (High, Medium, Low) and a brief reasoning for your choice.
5. Return a single JSON object with the following schema:
 - "corrected_query": A clean, corrected search term.
 - "identified_product": The full name of the single most likely product from the context.
 - "confidence": Your confidence in the decision: "High", "Medium", or "Low".
 - "reasoning": A brief, one-sentence explanation of why you made this choice.
If the query is too ambiguous or has no good match in the context, confidence should be "Low" and `identified_product` can be `null`.
---
CONTEXT:
{context}
RAW QUERY:
{query}
---
JSON OUTPUT:
"""
prompt = ChatPromptTemplate.from_template(prompt_template)
print("LLM and Prompt Template are configured.")

步驟5:創(chuàng)建端到端管道

現(xiàn)在使用LangChain表達式語言(LCEL)將所有組件鏈接在一起。這創(chuàng)建了從查詢到最終結(jié)果的流暢流程。

管道流程:

  • 用戶的查詢被傳遞給檢索器以獲取上下文。
  • 對上下文和原始查詢進行格式化并輸入到提示中。
  • 格式化的提示發(fā)送到LLM。
  • LLM的JSON輸出被解析成Python字典。
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough
def format_docs(docs):
 """Formats the retrieved documents for the prompt."""
 return "\n".join([f"- {d.metadata['product_name']}" for d in docs])
# The main RAG chain
rag_chain = (
 {"context": retriever | format_docs, "query": RunnablePassthrough()}
 | prompt
 | llm
 | StrOutputParser()
)
def search_pipeline(query: str):
 """Executes the full search and correction pipeline."""
 print(f"\n{'='*50}")
 print(f"Executing Pipeline for Query: '{query}'")
 print(f"{'='*50}")
 # --- Stage 1: Semantic Retrieval ---
 initial_context = retriever.get_relevant_documents(query)
 print("\n[Stage 1: Semantic Retrieval]")
 print("Found the following products for context:")
 for doc in initial_context:
 print(f" - {doc.metadata['product_name']}")
 # --- Stage 2: LLM Correction & Selection ---
 print("\n[Stage 2: LLM Correction & Selection]")
 llm_output_str = rag_chain.invoke(query)
 try:
 llm_output = json.loads(llm_output_str)
 print("LLM successfully parsed the query and returned:")
 print(json.dumps(llm_output, indent=2))
 corrected_query = llm_output.get('corrected_query', query)
 except (json.JSONDecodeError, AttributeError) as e:
 print(f"LLM output failed to parse. Error: {e}")
 print(f"Raw LLM output: {llm_output_str}")
 corrected_query = query # Fallback to original query
 # --- Final Step: Search with Corrected Query ---
 print("\n[Final Step: Search with Corrected Query]")
 print(f"Searching for the corrected term: '{corrected_query}'")
 final_results = vectorstore.similarity_search(corrected_query, k=3)
 print("\nTop 3 Product Results:")
 for i, doc in enumerate(final_results):
 print(f" {i+1}. {doc.metadata['product_name']} (ID: {doc.metadata['product_id']})")
 print(f"{'='*50}\n")
print("End-to-end search pipeline is ready.")

步驟6:演示和結(jié)果

現(xiàn)在,使用各種具有挑戰(zhàn)性的查詢來測試系統(tǒng)以了解其性能。

# --- Test Case 1: Simple Misspelling ---
search_pipeline("aata")
# --- Test Case 2: Vernacular Term ---
search_pipeline("kanda")
# --- Test Case 3: Brand Name + Misspelling ---
search_pipeline("cococola")
# --- Test Case 4: Ambiguous Query ---
search_pipeline("chese")
# --- Test Case 5: Highly Ambiguous / Vague Query ---
search_pipeline("drink")

輸出:

5 查詢管道:Kanda

6查詢管道:cococola

7查詢管道:Chese

8查詢管道:Girnk

可以看到,該系統(tǒng)可以用準確和正確的品牌或產(chǎn)品名稱來修正原始和嘈雜的用戶查詢,這對于在電子商務(wù)平臺上實現(xiàn)高精度的產(chǎn)品搜索至關(guān)重要。這將改善用戶體驗并提高轉(zhuǎn)化率。

注:在這個Git存儲庫中可以找到完整的代碼。

結(jié)論

這個多語言查詢解析系統(tǒng)成功地復(fù)制了Zepto高級搜索系統(tǒng)的核心策略。通過將快速語義檢索與基于LLM的智能分析相結(jié)合,該系統(tǒng)可以:

  • 準確地修正拼寫錯誤和俚語。
  • 理解多語言查詢并匹配正確產(chǎn)品。
  • 通過使用檢索到的上下文推斷用戶意圖來消除查詢的歧義(例如,在“奶酪片”和“奶酪醬”之間進行選擇)。
  • 提供結(jié)構(gòu)化的,可審計的輸出,展示修正及推理過程。

這種基于RAG的架構(gòu)是穩(wěn)健的、可擴展的,并展示了顯著改善用戶體驗和搜索轉(zhuǎn)化率的清晰路徑。

常見問題

Q1:什么是RAG,為什么在這里使用它?

答:RAG通過將其錨定到真實的目錄數(shù)據(jù)來提高LLM的準確性,避免幻覺并減少提示規(guī)模。

Q2:如何防止品牌名稱修正錯誤?

答:在檢索步驟中只注入最相關(guān)的品牌術(shù)語,避免擴大提示的規(guī)模。

Q3:應(yīng)該使用什么嵌入模型?

答:多語言句子轉(zhuǎn)換器模型(例如BAAI/ big -small-en-v1.5)針對語義相似性進行了優(yōu)化,最適合嘈雜和方言輸入。原文標題:How to Replicate Zepto’s Multilingual Query Resolution System from Scratch?,作者:Harsh Mishr

責任編輯:姜華 來源: 51CTO
相關(guān)推薦

2014-07-09 09:20:06

WPFWPF應(yīng)用

2024-02-23 09:00:00

編程語言編譯器工具

2025-01-26 16:57:02

2022-03-30 08:24:25

操作系統(tǒng)內(nèi)核開源軟件

2015-05-06 09:36:05

Java語言從零開始學(xué)習(xí)

2018-08-20 08:15:50

編程語言Go語言切片

2024-03-01 19:53:37

PyBuilderPython開發(fā)

2024-07-31 08:14:17

2010-02-22 09:39:52

HTML 5Web

2017-02-10 09:30:33

數(shù)據(jù)化運營流量

2022-08-09 07:22:15

語言數(shù)據(jù)庫程序

2025-01-09 11:14:13

2024-05-17 17:29:00

CurdlingPython開發(fā)

2015-10-15 14:16:24

2024-11-28 10:35:47

2022-04-01 08:09:03

操作系統(tǒng)嵌入式重構(gòu)

2023-10-24 16:44:24

RubyDNS

2014-04-16 14:50:20

Spark

2018-04-16 16:31:56

前端開發(fā)從零開始

2015-11-17 16:11:07

Code Review
點贊
收藏

51CTO技術(shù)棧公眾號

亚洲一区在线免费观看| 亚洲一区二区伦理| 欧美电影一区二区三区| 肉大捧一出免费观看网站在线播放 | 伦伦影院午夜日韩欧美限制| 亚洲精品久久一区二区三区777| 国产高清中文字幕在线| 久久久91精品国产一区二区三区| 国产在线观看91精品一区| 久久久美女视频| 欧美一区二区三区高清视频| 日韩精品一区二区三区在线 | 91成人在线网站| 亚洲va韩国va欧美va| 亚洲日本精品一区| 国产香蕉在线观看| 日本va欧美va精品| 亚州精品天堂中文字幕| 在线视频这里只有精品| 欧美三级午夜理伦三级小说| 91精品国产丝袜白色高跟鞋| 亚洲 中文字幕 日韩 无码| 欧美色图天堂| 中文字幕日韩精品一区| 欧美日韩视频在线一区二区观看视频| av天堂一区二区三区| 日韩精品一卡二卡三卡四卡无卡| 久久久久久久国产精品视频| 久久噜噜色综合一区二区| 国产欧美日韩精品高清二区综合区| 日韩三级免费观看| 色一情一区二区三区| 黄色综合网址| 天天影视涩香欲综合网| 波多野结衣与黑人| 久久五月精品| 中文字幕一区二区在线播放| 欧美一区二区视频17c| 天天综合在线视频| 成人免费毛片片v| 99国产盗摄| 999av视频| 麻豆精品精品国产自在97香蕉| 欧美亚洲视频一区二区| 日本中文字幕网| 亚洲成人中文| 国内精品久久影院| 日本少妇xxxx动漫| 日韩视频一区| 97免费在线视频| 亚洲精品国产精品乱码| 亚洲精品乱码久久久久久蜜桃麻豆| 欧美激情国产日韩精品一区18| 国精产品一区一区二区三区mba| 日韩欧美国产精品综合嫩v| 一区二区日韩精品| 青青青视频在线播放| 日韩欧美伦理| 久久人人爽亚洲精品天堂| 日韩三级久久久| 午夜精品偷拍| 91禁外国网站| 亚洲综合久久网| 免费人成精品欧美精品| 国产日韩欧美综合| 国产内射老熟女aaaa∵| 高清不卡在线观看| 久久国产精品久久精品国产| 精品推荐蜜桃传媒| 欧美高清一级片在线观看| 亚洲欧洲精品在线观看| 国产黄色小视频在线| 亚洲另类在线制服丝袜| 日韩美女爱爱视频| 波多野结衣久久精品| 欧美三级三级三级| 两女双腿交缠激烈磨豆腐| 国产一区调教| 怡红院精品视频| 国产大片免费看| 在线亚洲欧美| 国产精品一区二区在线| 精品人妻伦一区二区三区久久| 成人久久18免费网站麻豆 | 制服丝袜av在线| 亚洲综合福利| 久久亚洲精品视频| 免费毛片在线播放免费| 久久亚洲风情| 91超碰在线电影| 可以在线观看的av| 亚洲免费av观看| 欧美日韩在线视频一区二区三区| 欧美爱爱视频| 亚洲精品国产精品乱码不99按摩 | 日韩人妻一区二区三区| 999国产精品999久久久久久| 久久久久久久久久久国产| 日日夜夜狠狠操| 国产成人午夜片在线观看高清观看| 久久人人97超碰人人澡爱香蕉| 午夜在线观看视频| 精品久久久久久国产| 手机精品视频在线| 网曝91综合精品门事件在线| 日韩有码在线观看| 国产免费一级视频| 成人av在线看| 亚洲国产精品女人| 欧美xnxx| 日韩大陆毛片av| 久久黄色小视频| 捆绑调教美女网站视频一区| 久久精品日产第一区二区三区精品版| 国产黄a三级三级三级av在线看| 色婷婷av一区二区三区大白胸| 伊人影院在线观看视频| 91免费精品| 日韩免费在线看| 污污网站免费在线观看| 一区二区三区日韩精品| 手机av在线免费| 成人3d动漫在线观看| 欧洲午夜精品久久久| 亚洲国产www| 亚洲欧美另类小说| 亚洲综合欧美激情| 精品久久视频| 国产va免费精品高清在线观看 | 91在线云播放| 日本丰满少妇xxxx| 久久精品国产亚洲5555| 欧美丰满少妇xxxxx| 国产又粗又猛视频| 国产精品二三区| 99re6在线观看| 欧美残忍xxxx极端| 国产欧美一区二区| 又爽又大又黄a级毛片在线视频| 色乱码一区二区三区88| 中文字幕一区二区人妻在线不卡 | 亚洲精品国产无套在线观| 欧美一级视频在线| 999成人网| 91网站免费看| 影音先锋中文在线视频| 欧美一区日韩一区| 91aaa在线观看| 国产成人午夜高潮毛片| 日韩一级特黄毛片| 给我免费播放日韩视频| 国模吧一区二区| 亚洲 精品 综合 精品 自拍| 午夜精品久久久久久久99樱桃| 日本道中文字幕| 亚洲青涩在线| 欧美精品一区二区三区在线看午夜 | av直播在线观看| 久久久噜噜噜久久狠狠50岁| 日本高清不卡一区二区三| 成人国产精选| 久青草国产97香蕉在线视频| 精品国产区一区二| 五月天中文字幕一区二区| 亚洲国产欧美视频| 热久久免费视频| 香蕉视频免费版| 久久草在线视频| 国产成人精品电影久久久| 91高清在线视频| 日韩欧美综合在线| 免费黄色网址在线| 国产精品欧美一级免费| 日本亚洲一区二区三区| 国产日韩1区| 亚洲国产成人不卡| 日韩精品视频中文字幕| 91精品国产成人| 69久久夜色| 日韩女优电影在线观看| 日韩一区二区视频在线| 中文一区二区完整视频在线观看| 国产农村妇女精品久久| 亚洲国产专区| 一区二区av| 日韩av网站在线免费观看| 国产精品久久久久久久美男| 成人看av片| 亚洲欧美激情一区| 国产www视频| 日本高清无吗v一区| 唐朝av高清盛宴| 久久久久亚洲蜜桃| 久久黄色一级视频| 日韩精品成人一区二区三区| 奇米777四色影视在线看| 国产91精品对白在线播放| 亚洲最大成人免费视频| 视频在线日韩| 欧美日韩国产91| 自拍视频在线网| 日韩激情视频在线播放| 97人妻精品一区二区三区软件| 欧美视频二区36p| 欧美黑人精品一区二区不卡| 国产欧美日本一区二区三区| 国产污在线观看| 久草在线在线精品观看| 精品一区二区中文字幕| 欧美激情第二页| 亚洲一区二区在线观| 日韩精品福利一区二区三区| 91传媒视频免费| 精品69视频一区二区三区| 91高潮在线观看| 污片在线免费观看| 日韩中文字幕国产| 日本在线视频1区| 精品久久久久99| 国产丰满果冻videossex| 欧美视频一区二区三区在线观看| 久久精品国产成人av| 亚洲一二三级电影| 免费无遮挡无码永久在线观看视频 | 亚洲第一色中文字幕| 999av视频| 91精品国产欧美一区二区成人| 超碰在线97观看| 色999日韩国产欧美一区二区| 97免费在线观看视频| 亚洲一区电影777| 欧美日韩国产精品一区二区三区| 国产精品电影一区二区| 国产视频123区| 亚洲国产精品av| 微拍福利一区二区| 亚洲国产高清在线观看视频| 实拍女处破www免费看| 26uuu精品一区二区| 朝桐光av一区二区三区| 99久久婷婷国产| 玖玖爱在线精品视频| 99国产精品久久久久久久久久久| 动漫美女无遮挡免费| 成人黄色在线看| 亚洲欧美日本一区| 337p粉嫩大胆噜噜噜噜噜91av| 国产黄色三级网站| 26uuu精品一区二区三区四区在线| 在线免费观看a级片| 91视频91自| 蜜桃传媒一区二区亚洲| 中文字幕第一区二区| 国产3级在线观看| 最新国产精品久久精品| 高h视频免费观看| 亚洲一区二区三区不卡国产欧美| 国产精品2020| 日韩欧美精品中文字幕| 欧美视频xxxx| 91精品午夜视频| 亚洲欧美强伦一区二区| 日韩国产精品一区| 国产高清在线观看| 久久av资源网站| 91白丝在线| 国产精品黄色av| 国产精品xnxxcom| 国产一区二区在线网站| 神马影视一区二区| 大桥未久一区二区三区| 亚洲国产三级| 免费在线观看的毛片| 狠狠色丁香婷婷综合久久片| 激情小说欧美色图| 久久―日本道色综合久久| 国产精品综合激情| 亚洲自拍与偷拍| 日韩av大片在线观看| 欧美日韩情趣电影| 免费观看毛片网站| 中文字幕免费精品一区高清| 午夜在线激情影院| 国产成人av网| 91久久精品无嫩草影院| 精品一卡二卡三卡四卡日本乱码| jvid福利在线一区二区| 999久久欧美人妻一区二区| 六月婷婷一区| 亚洲精品成人无码毛片| 国产欧美日韩精品在线| 久久精品国产亚洲av无码娇色| 91精品91久久久中77777| 亚洲第一页综合| 中文字幕日韩欧美| av小说在线播放| 亚洲精品免费网站| 精品美女在线视频| 国产免费黄色小视频| 精彩视频一区二区三区| 久久国产精品影院| 亚洲国产中文字幕| 一炮成瘾1v1高h| 亚洲欧美国产日韩中文字幕| 日本三级在线观看网站 | 日韩欧美一级| 日韩精品另类天天更新| 伊人成人在线| 做a视频在线观看| 亚洲国产精品黑人久久久| 黄色片视频网站| 日韩一卡二卡三卡四卡| av基地在线| 日韩av电影在线播放| 麻豆精品av| 亚洲乱码日产精品bd在线观看| 人人狠狠综合久久亚洲| 欧美做受xxxxxⅹ性视频| 亚洲成av人片一区二区三区| 国产露脸无套对白在线播放| 夜夜躁日日躁狠狠久久88av | 国产一区二区丝袜| 综合伊思人在钱三区| 青青草精品视频在线| 国产成人免费在线观看不卡| 国产午夜手机精彩视频| 欧美日韩国产系列| av免费在线一区二区三区| 国产成人97精品免费看片| 九九视频精品全部免费播放| 成人午夜视频在线观看免费| 国产.欧美.日韩| 精品国产乱码久久久久久鸭王1| 欧美日韩国产一级| 亚洲乱亚洲乱妇| 国产日韩欧美在线看| 99热国内精品| 一级 黄 色 片一| 亚洲免费伊人电影| 精品区在线观看| 欧美激情中文字幕在线| 91成人短视频| 欧美大片在线播放| 成人成人成人在线视频| 日韩网红少妇无码视频香港| 亚洲国产成人精品电影| 狠狠操一区二区三区| 美女一区视频| 久久最新视频| 91无套直看片红桃在线观看| 欧美久久久一区| 在线heyzo| 精品久久久久久综合日本 | 国产第一区电影| 成人羞羞视频播放网站| 99九九99九九九99九他书对| 亚洲欧美成人一区二区三区| 亚洲国产成人精品一区二区三区| 高清视频欧美一级| 国产精品欧美在线观看| 国产又大又黄又猛| 亚洲美女在线国产| 色欲久久久天天天综合网| 欧美性视频精品| 日韩av免费大片| 手机av在线网站| 精品福利视频导航| 福利视频在线看| 51成人做爰www免费看网站| 影院欧美亚洲| av永久免费观看| 日韩亚洲欧美在线观看| 三级在线观看视频| 一区二区不卡在线视频 午夜欧美不卡'| 国产在线一区二区综合免费视频| 国产亚洲欧美精品久久久www| 亚洲欧美国内爽妇网| 24小时成人在线视频| 日韩av高清在线看片| 国产色综合久久| 精品国产av鲁一鲁一区 | 亚洲精品男人的天堂| 日韩在线免费高清视频| 欧美第一在线视频| 国产a视频免费观看| 亚洲免费毛片网站| 青青久在线视频免费观看| 成人免费激情视频| 麻豆久久婷婷| 国模无码国产精品视频| 亚洲美女av网站| 日韩08精品| 一级特黄性色生活片| 亚洲精品国产视频| 四虎影视精品成人| 国产欧美亚洲视频| 久久久成人网| 成人在线观看免费完整| 亚洲欧洲在线播放| 亚洲一二av|