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

RAG實戰 | 向量數據庫LanceDB指南

發布于 2025-4-3 00:15
瀏覽
0收藏

1. LanceDB介紹

LanceDB是一個開源的用 Rust 實現的向量數據庫(https://github.com/lancedb/lancedb),它的主要特點是:

  • 提供單機服務,可以直接嵌入到應用程序中
  • 支持多種向量索引算法,包括Flat、HNSW、IVF等。
  • 支持全文檢索,包括BM25、TF-IDF等。
  • 支持多種向量相似度算法,包括Cosine、L2等。
  • 與Arrow生態系統緊密集成,允許通過 SIMD 和 GPU 加速在共享內存中實現真正的零拷貝訪問。

2. LanceDB安裝

pip install lancedb

預覽版本:

pip install --pre --extra-index-url https://pypi.fury.io/lancedb/ lancedb

3. 快速入門

3.1 連接或者打開數據庫

創建數據庫

import lancedb
db = lancedb.connect("./test")  # 如果數據庫不存在,會自動創建

打開數據庫

db = lancedb.open("./test")     # 如果數據庫不存在,會報錯

3.2 創建表

data = [
    {"vector": [1, 2], "text": "hello"},
    {"vector": [3, 4], "text": "world"},
]
table = db.create_table("my_table", data=data, mode="overwrite")

df = pd.DataFrame(data)
table = db.create_table("my_table", data=df, mode="overwrite")

3.3 查看當前 db 中的表

print(db.table_names())

3.4 插入數據

data = [
    {"vector": [1, 2], "text": "hello"},
    {"vector": [3, 4], "text": "world"},
]
table.add(data)

3.5 查詢數據

通過向量查詢數據

query = [1, 2]
results = table.search(query).limit(1).to_pandas()

通過文本查詢數據

query = "hello"
results = table.search(query).limit(1).to_pandas()

3.6 創建索引

table.create_index()

LanceDB 不會自動創建索引,對于數據量較大的情況下,建議手動創建,否則會走全文檢索(速度會比較慢)。

3.7 刪除數據

table.delete(f'text = "hello"')

刪除數據當然也支持 SQL 語法,具體參考官方文檔(https://lancedb.github.io/lancedb/sql/#pre-and-post-filtering)。

3.8 刪除表

db.drop_table("my_table")

注意:如果表不存在,會報錯,可以通過傳入參數忽略錯誤 ??ignore_missing=True??。

4. 向量搜索

4.1 什么是向量搜索

向量搜索是一種在高維空間中搜索向量的方法,主要是將原始數據通過嵌入模型得到向量,然后通過向量相似度算法計算向量之間的距離,從而找到最相似的向量。

RAG實戰 | 向量數據庫LanceDB指南-AI.x社區

4.2 embedding

embedding 是將原始數據通過嵌入模型得到向量的過程,嵌入模型可以是預訓練的模型,也可以是自己訓練的模型,是一種將文本、圖像、音頻等數據投影到二維空間的方法。

RAG實戰 | 向量數據庫LanceDB指南-AI.x社區

4.3 索引

和關系型數據庫一樣,向量數據庫也需要索引來加速查詢,索引是一種數據結構,用于快速查找數據,LanceDB 使用基于磁盤的索引:IVF-PQ,是倒排索引的一種變體,使用PQ 來做壓縮嵌入。

RAG實戰 | 向量數據庫LanceDB指南-AI.x社區

PQ 原理主要分為以下步驟:

  • 對向量進行分桶,將向量分為多個桶,每個桶包含多個向量,比如 樣本的維度 D=1024,桶的數量 M=64,每個桶的維度 16;
  • 對樣本的每個段分別進行聚類,聚成 k=256(其中 K 可以定義) 個聚類中心,這樣整個樣本被分為 M*K 個聚類中心,每個聚類中心分配一個 ID(范圍 0-K-1);
  • 通過上面的聚類和 ID 分配,每個樣本就會變成量化后的向量,例如 [28, 100, 99, 255 ...];
  • 對于新加入樣本按照第一步的分桶方式切分,然后再聚類的分段里面找到最近的類中心,然后將聚類中心的 ID 作為量化后的向量;

通過以上的處理,原來 1024 維度向量*float類型(1024 * 4 字節)被壓縮到 64 個字節,大大減少了存儲空間和計算量,當然量化是有損的,所以對于數據量不大的情況,可以不使用索引,直接暴力搜索。

4.4 暴力搜索和 ANN 搜索

  • 如果要搜索的準確度,執行暴力搜索是一種好的選擇,基本上就是對所有的向量進行相似度計算,然后返回最相似的向量,相當于 kNN 搜索。
  • kNN 和每個向量都做距離計算,計算量比較大,所以需要使用 ANN 搜索,ANN 搜索是一種基于樹的搜索方法,使用樹結構來存儲向量,然后通過樹的搜索來找到最相似的向量。


RAG實戰 | 向量數據庫LanceDB指南-AI.x社區

4.5 HNSW

HNSW 是一種基于圖的搜索方法,使用圖結構來存儲向量,然后通過圖的搜索來找到最相似的向量,原理類似跳躍表,通過分層的 k-ANN 圖來實現遞歸搜索。

RAG實戰 | 向量數據庫LanceDB指南-AI.x社區

LanceDB 創建 HNSW 索引樣例:

data = [
    {"vector": row, "item": f"item {i}"}
    for i, row in enumerate(np.random.random((10_000, 1536)).astype('float32'))
]
tbl = db.create_table("my_vectors", data=data)
tbl.create_index(index_type=IVF_HNSW_SQ)

5. LanceDB 使用指南

5.1 通過 Pandas DataFrame 插入數據

import pandas as pd
import lancedb
import numpy as np
db = lancedb.connect("./test")
table = db.create_table("my_table", data=[], mode="overwrite")
df = pd.DataFrame({
    "vector": [np.random.rand(100) for _ in range(100)],
    "text": [f"hello {i}" for i in range(100)],
})
table.add(df)

5.2 通過 Arrow Table 插入數據

import pyarrow as pa
import lancedb
import numpy as np
db = lancedb.connect("./test")
table = db.create_table("my_table", data=[], mode="overwrite")
table = db.create_table("my_table", data=pa.Table.from_pandas(df), mode="overwrite")

5.3 通過 Model 插入數據

import lancedb
from lancedb.pydantic import LanceModel

class MyModel(LanceModel):
    vector: list[float]
    text: str

db = lancedb.connect("./test")
table = db.create_table("my_table", schema=MyModel, mode="overwrite")
model = MyModel(vector=[1, 2], text="hello")
table.add(model)

5.4 通過迭代器寫入大規模數據

import lancedb
import pyarrow as pa

def make_batches():
    for i in range(1000):
        yield pa.Table.from_pandas(pd.DataFrame({
            "vector": [np.random.rand(100) for _ in range(100)],
            "text": [f"hello {i}"for i in range(100)],
        }))

schema = pa.schema(
    [
        pa.field("vector", pa.list_(pa.float32(), 4)),
        pa.field("item", pa.utf8()),
    ]
)
db = lancedb.connect("./test")
table = db.create_table("my_table", make_batches(), schema=schema, mode="overwrite")

或者通過迭代器寫入數據:

import lancedb
import pyarrow as pa
def make_batches():
    for i in range(1000):
        yield pa.Table.from_pandas(pd.DataFrame({
            "vector": [np.random.rand(100) for _ in range(100)],
            "text": [f"hello {i}" for i in range(100)],
        }))

db = lancedb.connect("./test")
table = db.create_table("my_table", data=[], mode="overwrite")
table.add(make_batches())

5.5 刪除指定的數據

db = lancedb.connect("./test")
data = [
    {"x": 1, "vector": [1, 2]},
    {"x": 2, "vector": [3, 4]},
    {"x": 3, "vector": [5, 6]},
]
# Synchronous client
table = db.create_table("delete_row", data)
table.to_pandas()
#   x      vector
# 0  1  [1.0, 2.0]
# 1  2  [3.0, 4.0]
# 2  3  [5.0, 6.0]

table.delete("x = 2")
table.to_pandas()
#   x      vector
# 0  1  [1.0, 2.0]
# 1  3  [5.0, 6.0]

5.6 更新數據

db = lancedb.connect("./test")
data = [
    {"x": 1, "vector": [1, 2]},
    {"x": 2, "vector": [3, 4]},
    {"x": 3, "vector": [5, 6]}, 
]
# Synchronous client    
table = db.create_table("update_row", data)
table.update(where="x = 2", values={"vector": [10, 10]})

5.7 一致性

由于 lancedb 是嵌入到各個應用中,所以數據更新并不能保持一致,可以通過設置 ??read_consistency_interval?? 參數來保證數據更新的一致性。

??read_consistency_interval?? 是一個時間間隔,單位是秒。

  • 不設置,數據庫不檢查其他進程對表所做的更新。這提供了最佳查詢性能,但意味著客戶端可能無法看到最新的數據,此設置適用于在表引用的生命周期內數據不會發生變化的應用程序。
  • 如果設置為 0,數據庫在每次讀取時檢查更新。這提供了最強的一致性保證,確保所有客戶端都看到最新提交的數據,但是,它的開銷最大。當一致性比高 QPS 更重要時,此設置是合適的。
  • 自定義間隔時間,數據庫以自定義間隔(例如每 5 秒)檢查更新。這提供了最終一致性,允許寫入和讀取操作之間有一些滯后,從性能方面來看,這是強一致性和無一致性檢查之間的中間地帶,此設置適用于即時一致性并不重要但客戶端最終應該看到更新數據的應用程序。

from datetime import timedelta

uri = "data/sample-lancedb"
# 保障數據最終一致性
db = lancedb.connect(uri, read_consistency_interval=timedelta(secnotallow=5))
tbl = db.open_table("test_table")

5.8 構建 ANN 索引

import lancedb
import numpy as np
db = lancedb.connect("./test")
data = [
    {"vector": row, "item": f"item {i}"}
    for i, row in enumerate(np.random.random((10_000, 1536)).astype('float32'))
]
tbl = db.create_table("my_vectors", data=data)
tbl.create_index(distance_type='l2', num_partitinotallow=2, num_sub_vectors=4)
  • distance_type:距離度量算法,可以參考(cosine, l2)等;
  • num_partitions: 分區數量;
  • num_sub_vectors:子向量數量,PQ 的子向量數量;
  • num_bits:用于編碼的子向量的位數,支持 4 和 8;

如果需要通過 CUDA 加速,可以增加參數:

tbl.create_index(distance_type='l2', num_partitinotallow=2, num_sub_vectors=4, accelerator='cuda')

5.9 搜索數據

1)kNN 搜索:不建立索引,就會掃描全表,計算每個向量的距離,然后返回最相似的 k 個向量,也可以指定距離度量算法。

query = np.random.random(1536).astype('float32')
results = tbl.search(query).limit(10).distance_type("cosine").to_pandas()

2)ANN 搜索:通過索引搜索,支持 nprobes 和 refine_factor 參數。

  • nprobes 數字越大,搜索越準確,但是速度越慢;
  • refine_factor 對召回的進行重排優化;

query = np.random.random(1536).astype('float32')
tbl.search(query).limit(2).nprobes(20).refine_factor(
    10
).to_pandas()

3)基于距離范圍搜索:主要用于不通過topk 查詢,而是通過距離范圍查詢。

query = np.random.random(1536).astype('float32')
tbl.search(query).distance_range(0.1, 0.5).to_pandas()

4)全文搜索:如果需要對字符串進行索引,并通過關鍵字搜索進行查詢,可以通過創建 FTS 索引。

from lancedb.index import FTS

tbl = db.create_table("my_vectors", data=[
    {"vector": np.rand.random(10), "item": f"this item {i}"}
    {"vector": np.rand.random(10), "item": f"this item {i + 100}"}
])
tbl.create_fts_index("text", use_tantivy=False)
tbl.search("this item 10").limit(10).select(["item"]).to_pandas()

5)過濾搜索:通過 SQL 語法進行過濾搜索。

tbl.search("this item 10").limit(10).where("item='this'", prefilter=True).to_pandas()

5.10 SQL 語法

LanceDB 支持 SQL 語法如下:

>, <, >=, <=
AND, OR, NOT
IS NULL, IS NOT NULL
IS TRUE, IS FALSE
IN 
LIKE, NOT LIKE
CAST 
regexp_match(column, pattern)

樣例如下:

table.search("this item 10").where(
    "(item IN ('item 0', 'item 2')) AND (id > 10)"
).to_arrow()

6. LanceDB 結合 embedding

6.1 注冊 embedding 模型

LanceDB 支持結合 embedding 模型進行搜索。

import lancedb
from lancedb.pydantic import LanceModel, Vector
from lancedb.embeddings import get_registry

db = lancedb.connect("./test")
func = get_registry().get("openai").create(name="text-embedding-ada-002")

class Words(LanceModel):
    text: str = func.SourceField()
    vector: Vector(func.ndims()) = func.VectorField()

table = db.create_table("words", schema=Words, mode="overwrite")
table.add(
    [
        {"text": "hello world"},
        {"text": "goodbye world"}
    ]
)

query = "greetings"
actual = table.search(query).limit(1).to_pydantic(Words)[0]
print(actual.text)

通過 get_registry() 注冊不同的模型參數,其中支持的代碼如下:

  • ??get_registry().get("sentence-transformers").create(name="BAAI/bge-small-en-v1.5", device="cpu")??
  • ??get_registry().get("huggingface").create(name='facebook/bart-base')??
  • ??get_registry().get("ollama").create(name="nomic-embed-text")??
  • ??get_registry().get("openai").create(name="text-embedding-ada-002")??
  • ??et_registry().get("instructor").create(source_instructinotallow="represent the docuement for retreival", query_instructinotallow="represent the document for retreiving the most similar documents")??
  • ??get_registry().get("gemini-text").create()??
  • ??get_registry().get("open-clip").create()??
  • ??get_registry().get("imagebind").create()??...

6.2 完整的使用樣例

1)注冊 embedding 函數

from lancedb.embeddings import get_registry

registry = get_registry()
clip = registry.get("open-clip").create()

2)定義數據模型

from lancedb.pydantic import LanceModel, Vector
from typing import List

class Document(LanceModel):
    id: str
    vector: Vector(clip.ndims()) = clip.VectorField()
    image_uri: str = clip.SourceField()

3)創建表并添加數據

db = lancedb.connect("~/lancedb")
table = db.create_table("pets", schema=Pets)

table.add([{"image_uri": u} for u in uris])

4)查詢數據

results = (
    table.search("dog")
        .limit(10)
        .to_pandas()
)

參考

(1)??https://lancedb.github.io/lancedb/??

(2)https://excalidraw-phi-woad.vercel.app/

本文轉載自??周末程序猿??,作者:周末程序猿

已于2025-4-3 00:15:42修改
收藏
回復
舉報
回復
相關推薦
91大神在线网站| 国产精品一区二区三区四| **欧美日韩在线| 亚洲一区二区视频在线观看| 国模一区二区三区私拍视频| 欧美另类高清videos的特点| 在线观看国产精品入口| 亚洲精品第一国产综合精品| 蜜桃免费在线视频| 日本孕妇大胆孕交无码| 国产亚洲污的网站| 亚洲xxx自由成熟| 在线观看免费国产视频| 久久亚洲影视| 日韩国产精品一区| 国产xxxxhd| av免费在线一区| 亚洲一卡二卡三卡四卡| 亚洲精品永久www嫩草| 色婷婷中文字幕| 国内精品伊人久久久久影院对白| 91av成人在线| 免费麻豆国产一区二区三区四区| 欧美精品系列| 日韩不卡在线观看| 992kp免费看片| 成人在线视频观看| 亚洲高清免费观看| 午夜久久久久久久久久久| 人操人视频在线观看| 国产成人日日夜夜| 国产一区二中文字幕在线看 | 国产黄色av网站| 日本大胆欧美人术艺术动态| 91福利视频在线观看| 加勒比av在线播放| 欧美.www| 久久伊人免费视频| 欧美xxxooo| 欧美一区二区三区高清视频| 亚洲精品一区久久久久久| 美女扒开腿免费视频| 国产一区二区三区黄网站| 欧美日韩国产欧美日美国产精品| 无遮挡又爽又刺激的视频| 国产不卡123| 午夜精品视频一区| 成人网站免费观看入口| 超碰中文在线| 亚洲va欧美va人人爽午夜| www.亚洲成人网| 羞羞的视频在线观看| 亚洲视频中文字幕| 最新视频 - x88av| 中文在线观看免费| 亚洲狠狠丁香婷婷综合久久久| 中文字幕乱码一区二区三区| 麻豆免费在线视频| 亚洲卡通动漫在线| 日韩小视频网站| 91制片在线观看| 欧美视频专区一二在线观看| 91国视频在线| 欧美大片免费高清观看| 91福利视频网站| av污在线观看| 亚洲国产综合在线观看| 日韩一区二区影院| 国产一级黄色录像| 蜜臀91精品国产高清在线观看| 亚洲欧美成人一区二区在线电影| 妺妺窝人体色WWW精品| 日韩精品dvd| 久久精品国产96久久久香蕉| 黄色一级片在线| 亚洲美女少妇无套啪啪呻吟| 日本国产一区二区三区| 中文资源在线播放| 国产一区二区不卡在线| 国产精品一国产精品最新章节| 天天插天天干天天操| 久久亚洲影视婷婷| 一区二区免费电影| 伦理在线一区| 欧洲一区二区av| 午夜激情影院在线观看| 国产精品xxx在线观看| 亚洲欧美一区二区激情| 狂野欧美性猛交| 国内精品美女在线观看| 国产成人精品电影久久久| 一级黄色a视频| 成人免费视频app| 日韩.欧美.亚洲| 亚洲区欧洲区| 色成人在线视频| 欧美国产日韩在线视频| 欧美三级自拍| 久久精品国产综合| 久久精品国产成人av| 九九国产精品视频| 欧美高清性xxxxhd | 神马日本精品| 精品国模在线视频| 中文字幕免费观看| 成人免费视频app| 亚洲一区三区视频在线观看| 色偷偷色偷偷色偷偷在线视频| 欧美日韩激情在线| 青青草视频网站| 亚洲国产精品综合久久久| 日本久久久a级免费| 亚洲国产精品无码久久| 国产精品美女久久久久久久网站| 日韩视频免费播放| 警花av一区二区三区| 国产亚洲美女久久| www.国产色| 国产a精品视频| 国产精品h视频| 国产精品99| 日韩精品中文字幕有码专区| 欧美另类视频在线观看| 麻豆久久久久久久| 午夜精品一区二区在线观看的| 国产剧情av在线播放| 日韩一区二区在线免费观看| 少妇高潮在线观看| 麻豆国产91在线播放| 欧美日韩一区二| 黄毛片在线观看| 亚洲精品在线三区| 久久久久免费看| 国产高清在线精品| 裸体大乳女做爰69| 91精品麻豆| 日韩在线免费视频| 中文在线a天堂| 国产日韩精品视频一区| 欧美精品无码一区二区三区| 一区二区三区韩国免费中文网站| 91精品国产高清久久久久久久久 | jizz欧美| 中文字幕亚洲字幕| 波多野结衣高清视频| 久久精品在这里| 成人在线观看黄| 狠狠色狠狠色综合婷婷tag| 欧美在线亚洲在线| 可以在线观看的av| 欧美三片在线视频观看| 超碰人人干人人| 捆绑紧缚一区二区三区视频| 一区二区三区在线观看www| 国产成人a视频高清在线观看| 国产亚洲综合久久| 一本到在线视频| 17c精品麻豆一区二区免费| 国产高清av片| 国产综合自拍| 国产精品一区二区欧美| 日韩脚交footjobhd| 亚洲人成免费电影| 91av国产精品| 亚洲精品视频在线观看网站| 久久免费精品国产| 亚洲综合另类| 亚洲精品人成| 欧美久久一区二区三区| 91精品国产免费久久久久久 | 欧美精品一区免费| 欧美一区三区| 99在线观看| 伊人久久在线| 少妇av一区二区三区| 国产福利免费视频| 欧美午夜影院在线视频| 91导航在线观看| 国产一区二区三区观看| a级黄色小视频| 欧美色就是色| 成人av资源网| 欧美男女交配| 久久99热精品这里久久精品| 四虎影院在线播放| 欧美精品一二三区| 日韩黄色一级大片| 国产精品传媒入口麻豆| 男人的天堂影院| 久久99最新地址| 国产v片免费观看| 日韩电影免费网站| 国产一区二区三区四区hd| 成人看片毛片免费播放器| 欧美激情亚洲视频| av资源网在线观看| 亚洲国产91色在线| 国产乱码精品一区二区三区精东| 午夜伊人狠狠久久| 91香蕉视频网| 26uuu国产日韩综合| www.成年人| 久久久久久久欧美精品| 日本福利视频在线观看| 成人在线国产| 精品国产一区二区三区四区精华| 日日夜夜亚洲精品| 秋霞成人午夜鲁丝一区二区三区| 黄色网页在线免费看| 亚洲欧美综合图区| 丁香六月天婷婷| 这里只有精品视频在线观看| 无码人妻av免费一区二区三区 | 久久精品国产2020观看福利| 青青草视频在线观看| 欧美成人三级在线| 97人妻精品一区二区三区| 一本到不卡精品视频在线观看| 麻豆changesxxx国产| 中文字幕在线不卡一区二区三区| 黄色在线观看av| 成人av在线资源网站| 国产老头和老头xxxx×| 久久国产麻豆精品| 日本熟妇人妻中出| 久久一区二区三区四区五区 | 五月天亚洲综合小说网| 一呦二呦三呦国产精品| 国产精品一区视频| 91午夜精品| 国产激情一区二区三区在线观看 | 国产一区精品视频| 在线精品视频一区| 北条麻妃高清一区| 精品国产一区二| 亚洲综合最新在线| 亚洲视频资源| 亚洲已满18点击进入在线看片| 日韩欧乱色一区二区三区在线| 国产精品日韩专区| 另类一区二区| 成人福利在线视频| 综合欧美精品| 成人福利网站在线观看| 国产在线不卡一区二区三区| 91日本在线视频| 国产一区二区在线观| 99久久99久久精品国产片| 欧美影院视频| 国产精品中出一区二区三区| 欧美绝顶高潮抽搐喷水合集| 久久综合狠狠综合久久综青草 | 在线观看欧美亚洲| 女人天堂亚洲aⅴ在线观看| 久久99国产精品一区| 欧美+亚洲+精品+三区| 日韩在线视频在线| 亚洲乱码视频| 亚洲色成人一区二区三区小说| 欧美亚洲自偷自偷| 五月天婷婷激情视频| 麻豆国产精品一区二区三区| 国产精品探花在线播放| 国产成人亚洲精品狼色在线| yy1111111| 国产欧美一区二区精品婷婷| 日本 欧美 国产| 亚洲自拍偷拍九九九| 天天操天天操天天操天天| 在线一区二区三区四区五区 | 午夜精品亚洲一区二区三区嫩草| 羞羞色午夜精品一区二区三区| 久久久久久久9| 午夜在线视频一区二区区别| 一区二区xxx| 国产成人丝袜美腿| 黄色aaa视频| 亚洲视频免费在线| 日韩精品一区二区在线播放| 欧美午夜精品久久久久久超碰| 国产日产亚洲系列最新| 日韩av在线免费看| gogogo高清在线观看免费完整版| 久久影院中文字幕| 老色鬼在线视频| 国产日韩av在线播放| 大桥未久女教师av一区二区| 日本视频精品一区| 欧美1区免费| 免费在线观看的毛片| 国产一区二区三区视频在线播放| 插我舔内射18免费视频| 国产精品人人做人人爽人人添| 久久久精品视频在线| 色94色欧美sute亚洲线路一ni | 亚洲欧洲日产国产网站| bt在线麻豆视频| 51视频国产精品一区二区| 精品视频在线观看免费观看| 欧美成熟毛茸茸复古| 自拍欧美日韩| 亚洲精品视频导航| av在线一区二区| 老熟妻内射精品一区| 91成人免费在线视频| 欧美一级视频免费| 美女少妇精品视频| 不卡亚洲精品| 六月婷婷久久| 亚洲第一在线| 日韩av福利在线观看| 国产精品区一区二区三区| 91在线视频在线观看| 日韩精品一区二区三区中文精品| a√资源在线| 91高清免费视频| 99a精品视频在线观看| 综合网五月天| 蜜桃精品视频在线| 三上悠亚ssⅰn939无码播放| 亚洲电影一区二区| 国产黄色片免费| 久久中文精品视频| 久久久加勒比| 日韩av影视| 丝瓜av网站精品一区二区| 日韩成人av一区二区| 亚洲午夜在线观看视频在线| 国产视频www| 久久av中文字幕| 爱情电影网av一区二区| 亚洲精品在线观看免费| 日本特黄久久久高潮| 亚洲区自拍偷拍| 色中色一区二区| 亚洲av成人精品毛片| 亚洲91av视频| 偷拍亚洲精品| av动漫在线看| 91免费版在线| 日韩在线播放中文字幕| 日韩精品有码在线观看| 热色播在线视频| 久久精品magnetxturnbtih| 亚洲美女一区| 欧美做受高潮6| 欧美日韩一区久久| 久久bbxx| 91久久精品国产91久久性色tv| 在线观看国产精品入口| 香蕉视频免费网站| 香蕉乱码成人久久天堂爱免费| 蜜桃久久一区二区三区| 国内精品一区二区三区| 啪啪激情综合网| 国产成人无码av在线播放dvd| 国产亚洲一区二区三区| 亚洲最大成人在线视频| 久久国产精品久久久久| 999久久精品| 日韩 欧美 高清| **欧美大码日韩| 男人的天堂a在线| 日韩免费在线免费观看| 日韩大片在线| 高清中文字幕mv的电影| 欧美性xxxx极品hd满灌| av大片在线看| 91久久精品国产91久久性色tv | 999久久久精品视频| 亚洲乱码国产乱码精品精的特点 | jazzjazz国产精品久久| 日本毛片在线免费观看| 国产精品少妇自拍| www.午夜激情| 日韩免费观看av| 综合激情在线| 国产ts丝袜人妖系列视频| 欧美视频日韩视频| 黄色成人在线网| 日韩电影在线播放| 国产成人鲁色资源国产91色综| 狠狠人妻久久久久久综合| 日韩在线观看免费高清| 欧美天堂影院| 91av视频免费观看| 天天综合天天综合色| 色影视在线观看| 国产一区二区自拍| 国内精品伊人久久久久影院对白| 久久久久久久久久影院| 久久天堂电影网| 免费一区二区三区视频导航| 五月天国产视频| 色婷婷久久一区二区三区麻豆| 色欧美激情视频在线| 国产一区不卡在线观看| 久久电影网电视剧免费观看| 成人免费视频毛片| 欧美精品在线免费播放|