久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

Flutter + EmbeddingGemma 2 實(shí)現(xiàn)端側(cè)本地語(yǔ)義搜索的工程實(shí)踐

Flutter + EmbeddingGemma 2 實(shí)現(xiàn)端側(cè)本地語(yǔ)義搜索的工程實(shí)踐 前陣子我自己折騰一個(gè)移動(dòng)端的本地語(yǔ)義搜索功能翻來(lái)覆去對(duì)比了好幾種方案最終被一套組合拳吸引住了Flutter 做跨端殼子EmbeddingGemma 2 做端側(cè)向量化再加上所謂“完全本地化 AI Edge Foresight”的思路。這個(gè)組合讓我意識(shí)到端側(cè) AI 不再是 PPT 里的概念而是真的可以在手機(jī)里跑起來(lái)、并且跑得動(dòng)的工程實(shí)踐。這篇文章就圍繞這個(gè)項(xiàng)目標(biāo)題來(lái)拆一拆為什么選 Flutter為什么是 EmbeddingGemma 2以及所謂“AI Edge Foresight”到底解決什么問(wèn)題。文章不會(huì)去貼大段官方文檔而是按照我從零到一接入、踩坑、調(diào)優(yōu)的真實(shí)過(guò)程來(lái)講盡量把每個(gè)關(guān)鍵選擇背后的原因和推理鏈說(shuō)清楚給正在考慮同類方案的朋友一個(gè)可以直接落地的參考。1. 項(xiàng)目概述當(dāng) Flutter 遇上端側(cè)嵌入模型1.1 這個(gè)項(xiàng)目到底解決了什么問(wèn)題先聊需求場(chǎng)景?,F(xiàn)在很多 App 內(nèi)部都有大量非結(jié)構(gòu)化內(nèi)容比如用戶的筆記、收藏的文章、聊天記錄、商品評(píng)論甚至圖片的 OCR 文本。傳統(tǒng)做法是把這些內(nèi)容傳到云端讓服務(wù)器跑一次文本向量化然后存進(jìn)向量數(shù)據(jù)庫(kù)做檢索或聚類。但這么做有一個(gè)繞不開的坎隱私、延遲、離線能力。用戶并不希望自己的每一條日記都被上傳到服務(wù)器也不希望在地鐵上斷網(wǎng)的時(shí)候搜索框直接變成擺設(shè)。因此“端側(cè) AI”就成了一個(gè)很自然的方向把模型放到手機(jī)里把推理過(guò)程放在本地讓數(shù)據(jù)永遠(yuǎn)不出設(shè)備。這樣既解決了隱私合規(guī)的問(wèn)題又能在無(wú)網(wǎng)環(huán)境下繼續(xù)提供智能能力。這套項(xiàng)目標(biāo)題里提到的“AI Edge Foresight”從我理解的角度看并不是某個(gè)神秘的特定軟件包而是一種產(chǎn)品設(shè)計(jì)理念在設(shè)備邊緣提前對(duì)內(nèi)容做理解和預(yù)測(cè)從而在用戶發(fā)起請(qǐng)求前就準(zhǔn)備好一部分答案。它強(qiáng)調(diào)的是一種“預(yù)判式交互”。舉一個(gè)直觀的例子當(dāng)用戶正在輸入法里打了一半字本地模型已經(jīng)通過(guò)對(duì)已輸入文本的向量分析預(yù)判出下一個(gè)可能的實(shí)體或短語(yǔ)并提前把搜索結(jié)果準(zhǔn)備好。這個(gè)動(dòng)作如果放到云端去做光是網(wǎng)絡(luò)往返的時(shí)間就足以讓體驗(yàn)卡頓。但是如果完全用本地模型嵌入向量來(lái)做延遲可以被壓縮到幾十毫秒以內(nèi)用戶體驗(yàn)立刻就不一樣了。所以這個(gè)項(xiàng)目最核心的價(jià)值不是“又是一個(gè)模型”而是把模型的推理能力真正壓進(jìn)了移動(dòng)客戶端的執(zhí)行鏈路里。它解決的問(wèn)題是那些對(duì)隱私、離線、實(shí)時(shí)性要求都很高的場(chǎng)景。而 Flutter 的加入則是為了讓這套能力不必在 iOS 和 Android 上各寫一遍。你可以把 Flutter 理解為一套統(tǒng)一的外殼EmbeddingGemma 2 是殼里的“AI 引擎”二者結(jié)合之后跨平臺(tái)移動(dòng)應(yīng)用可以用一套 Dart 代碼調(diào)用完全本地化的語(yǔ)義理解能力。1.2 為什么偏偏是 Flutter 和 EmbeddingGemma 2說(shuō)實(shí)話一開始我也有點(diǎn)猶豫端側(cè) AI 不是有現(xiàn)成的 Core ML、ML Kit、MediaPipe 這些嗎為什么還要繞道 Flutter后來(lái)我把思路理清了如果你只做單端、只做 iOS那直接用蘋果自家的框架肯定更省事但如果你像我一樣需要同時(shí)覆蓋 Android 和 iOS還要在后期有可能擴(kuò)展到桌面端、嵌入式 Linux 設(shè)備Flutter 的多端一致性優(yōu)勢(shì)就非常關(guān)鍵。Flutter 的渲染引擎可以在各個(gè)平臺(tái)上保持一致的 UI 表現(xiàn)而通過(guò)平臺(tái)通道機(jī)制它能調(diào)用每一端的原生推理接口。換句話說(shuō)Flutter 不是來(lái)替代原生 AI 框架的而是來(lái)當(dāng)“總線”的把底層各種原生推理引擎統(tǒng)一封裝成一個(gè) Dart 層的調(diào)用接口。至于為什么選 EmbeddingGemma 2我當(dāng)時(shí)的判斷依據(jù)有幾個(gè)第一它的模型體積控制得不錯(cuò)適合移動(dòng)端集成第二它主打的是高質(zhì)量的文本嵌入向量也就是把一段文字映射成一串?dāng)?shù)值讓語(yǔ)義相近的內(nèi)容在向量空間里的位置也相近第三它設(shè)計(jì)上不是只能跑在云端框架里而是提供了輕量化、可量化的版本可以通過(guò)轉(zhuǎn)成 TFLite 或 ONNX 格式在端側(cè)運(yùn)行。用生活化的比喻來(lái)說(shuō)EmbeddingGemma 2 就像一臺(tái)小小的“語(yǔ)義翻譯機(jī)”把人類語(yǔ)言翻譯成機(jī)器能計(jì)算的數(shù)學(xué)坐標(biāo)。Flutter 則是連接這臺(tái)翻譯機(jī)和 App 界面的橋梁。再往深一層想這套組合還有一個(gè)隱性優(yōu)勢(shì)生態(tài)的延續(xù)性。Flutter 的 pub.dev 上已經(jīng)有不少機(jī)器學(xué)習(xí)插件的積累雖然質(zhì)量參差不齊但至少證明了社區(qū)在朝著“移動(dòng)端即 AI 運(yùn)行時(shí)”的方向走。EmbeddingGemma 2 雖然不是專為 Flutter 設(shè)計(jì)的但只要你愿意寫一層薄薄的橋接代碼就能把它變成 Flutter 工程里一個(gè)非常好用的能力組件。而且在實(shí)踐里我發(fā)現(xiàn)與其等某個(gè)現(xiàn)成的“全家桶插件”出現(xiàn)不如自己動(dòng)手封裝一套因?yàn)檫@樣可以完全控制線程調(diào)度、內(nèi)存釋放和緩存策略避免被第三方庫(kù)的隱藏設(shè)計(jì)卡住脖子。2. 核心細(xì)節(jié)解析EmbeddingGemma 2 的工作原理與落地要點(diǎn)2.1 嵌入模型到底是什么很多剛接觸的朋友會(huì)把“嵌入”和“生成式大模型”搞混。生成式模型是給你一句話讓它繼續(xù)寫后面的字而嵌入模型是給你一句話讓它輸出一串固定長(zhǎng)度的數(shù)字?jǐn)?shù)組。這串?dāng)?shù)組通常被稱為“向量”它的維度可能是 768、1024也可能是 2048具體取決于模型設(shè)計(jì)。向量的關(guān)鍵在于兩段語(yǔ)義相近的文本它們轉(zhuǎn)換出來(lái)的向量之間的距離會(huì)很近語(yǔ)義風(fēng)馬牛不相及的文本向量之間的距離會(huì)很遠(yuǎn)。這個(gè)特性讓嵌入模型可以非常自然地支撐搜索、分類、聚簇、去重、相似度推薦等任務(wù)。EmbeddingGemma 2 正是這一類模型。它的輸入是一段 tokenized 之后的文本輸出是一個(gè)向量表示。你可以把它看作是一個(gè)“編碼器”把語(yǔ)言的語(yǔ)義壓縮在一組浮點(diǎn)數(shù)中。和其他嵌入模型相比EmbeddingGemma 2 在開源生態(tài)里的一個(gè)優(yōu)勢(shì)是它不僅給出了模型權(quán)重還提供了相對(duì)清晰的部署示例和評(píng)測(cè)基準(zhǔn)方便使用者快速判斷它是否適合自己手頭的業(yè)務(wù)。另外一個(gè)值得注意的點(diǎn)是這一類模型雖然不能直接“說(shuō)話”但它的向量結(jié)果可以被很多傳統(tǒng)機(jī)器學(xué)習(xí)算法直接使用例如余弦相似度計(jì)算、K-Means 聚類、PCA 降維可視化、甚至訓(xùn)練一個(gè)簡(jiǎn)單的邏輯回歸分類器。實(shí)際使用中我發(fā)現(xiàn)很多人會(huì)走入一個(gè)誤區(qū)以為嵌入模型越強(qiáng)越好于是把模型換成更大的版本。但端側(cè)場(chǎng)景恰恰相反模型體積和推理延遲的增長(zhǎng)會(huì)以非線性方式吃掉硬件資源。以我自己的測(cè)試數(shù)據(jù)為例在單臺(tái)中端 Android 設(shè)備上運(yùn)行一個(gè)約 300MB 的嵌入模型單次推理耗時(shí)可能在 80 到 150 毫秒之間而換成一個(gè)量化后不到 100MB 的模型單次推理能降到 30 到 60 毫秒。對(duì)于絕大多數(shù)移動(dòng)端語(yǔ)義搜索、內(nèi)容分類場(chǎng)景多出來(lái)的這百分之幾的精度差異遠(yuǎn)沒(méi)有低延遲和低內(nèi)存占用重要。所以在端側(cè)選嵌入模型的標(biāo)準(zhǔn)不是“最高精度”而是“在預(yù)算范圍內(nèi)的夠用精度”。2.2 關(guān)鍵參數(shù)與向量化實(shí)踐要正確使用 EmbeddingGemma 2有幾個(gè)參數(shù)和概念必須先理清楚。首先是輸入長(zhǎng)度限制。嵌入模型通常不能接收無(wú)限長(zhǎng)的文本一般會(huì)截?cái)嗟?512 或 1024 個(gè) token。如果你的業(yè)務(wù)需要處理超長(zhǎng)文本就必須做分段處理比如按句子、按段落切分然后分別生成向量再通過(guò)平均池化或者加權(quán)合并的方式得到文檔級(jí)向量。我在一個(gè)實(shí)際項(xiàng)目里處理用戶日記時(shí)就是這么干的先按 300 字左右切段每段單獨(dú)向量化再把這些向量加起來(lái)做歸一化最后得到的向量用于全文檢索。這樣做的好處是即使某一段提到關(guān)鍵實(shí)體也不會(huì)被過(guò)長(zhǎng)的上下文稀釋掉。其次是歸一化。很多建模小白在第一次接嵌入模型時(shí)拿到的向量直接就去算點(diǎn)積結(jié)果發(fā)現(xiàn)分?jǐn)?shù)不穩(wěn)定。這是因?yàn)槟P洼敵龅南蛄磕iL(zhǎng)差異較大導(dǎo)致同一條樣本在不同批次之間的點(diǎn)積數(shù)值波動(dòng)明顯。正確做法是先做 L2 歸一化也就是把向量的模長(zhǎng)變成 1然后再算余弦相似度。歸一化之后的向量之間計(jì)算余弦相似度其實(shí)就等于計(jì)算點(diǎn)積。這個(gè)細(xì)節(jié)平時(shí)不顯眼但它直接決定了你存的向量數(shù)據(jù)的質(zhì)量也會(huì)影響后續(xù)聚類、閾值判斷的穩(wěn)定性。第三是批處理策略。在端側(cè)由于 CPU 或 NPU 的資源有限一次性塞入大量文本會(huì)導(dǎo)致內(nèi)存峰值飆升。最佳實(shí)踐是控制批次大小例如每次最多處理 8 個(gè)句子處理完立即釋放結(jié)果并回收臨時(shí)張量。還可以把不同優(yōu)先級(jí)的任務(wù)分開用戶正在輸入的關(guān)鍵詞走實(shí)時(shí)推理通道后臺(tái)批量同步的歷史內(nèi)容走另一個(gè)更慢但更穩(wěn)定的隊(duì)列。我自己的做法是維護(hù)一個(gè) Dart 層面的異步隊(duì)列按優(yōu)先級(jí)調(diào)度任務(wù)底層原生推理接口只負(fù)責(zé)單條或小批量計(jì)算上層通過(guò)并發(fā)控制來(lái)保證 UI 不卡頓。還有一個(gè)容易被忽略的點(diǎn)嵌入模型對(duì)文本的預(yù)處理方式也會(huì)影響結(jié)果。比如是否要保留標(biāo)點(diǎn)、是否需要小寫化、是否需要去除停用詞這些操作看似簡(jiǎn)單但會(huì)直接影響 tokenizer 的切分效果。EmbeddingGemma 2 自帶了一套推薦的分詞方式實(shí)際接入時(shí)盡量復(fù)用它的分詞器不要自己另外搞一套文本清洗管道否則容易出現(xiàn)“你以為模型理解的是這個(gè)意思其實(shí)模型看到的是一堆被打亂的碎片”的情況。2.3 端側(cè)部署的模型壓縮與量化把 EmbeddingGemma 2 放到手機(jī)里不能直接塞原始權(quán)重文件。原始模型大小可能在幾百 MB 量級(jí)App 包體根本吃不消。所以第一步就是做量化。量化的本質(zhì)是把模型里的 32 位浮點(diǎn)參數(shù)變成 8 位整數(shù)甚至 4 位整數(shù)從而用更少的比特存儲(chǔ)同一個(gè)參數(shù)。量化之后模型體積通常能縮小到原來(lái)的四分之一到三分之一推理速度也會(huì)因?yàn)閮?nèi)存訪問(wèn)量下降而變快。代價(jià)是精度會(huì)有少量損失但嵌入模型通常對(duì)量化不算太敏感因?yàn)橄蛄孔罱K還要經(jīng)過(guò)歸一化和相似度計(jì)算輕微的數(shù)值偏移會(huì)被后處理過(guò)程抹平一部分。我實(shí)測(cè)了兩種量化路徑一種是把模型轉(zhuǎn)成 TensorFlow Lite 格式并使用其內(nèi)置的 post-training dynamic range quantization另一種是轉(zhuǎn)成 ONNX Runtime 可以讀取的 int8 量化模型。在一個(gè) Flutter 工程里TFLite 路徑有一個(gè)明顯優(yōu)勢(shì)官方提供了 flutter 插件可以直接加載 .tflite 文件并執(zhí)行推理。不過(guò)它也有一個(gè)坑如果模型包含某些特殊算子比如復(fù)雜的注意力機(jī)制變體轉(zhuǎn)換工具可能會(huì)拒絕導(dǎo)出這時(shí)候就需要手動(dòng)替換算子或者改用 ONNX Runtime。我的平衡策略是優(yōu)先用 TFLite遇到兼容性問(wèn)題再切 ONNX Runtime不在一棵樹上吊死。模型壓縮之外還要考慮初始化時(shí)間。App 冷啟動(dòng)時(shí)如果立刻加載一個(gè)大模型用戶會(huì)明顯感覺(jué)到啟動(dòng)變慢。我的做法是把模型加載放到后臺(tái)線程并且結(jié)合內(nèi)存映射技術(shù)讓模型文件不必一次性全部讀入內(nèi)存。在 Android 上可以用 mmap 的方式加載模型文件在 iOS 上則可以通過(guò) Core ML 的分層加載機(jī)制來(lái)減少初始化開銷。這一步做完之后冷啟動(dòng)時(shí)間可以從原來(lái)的兩三秒降到一秒以內(nèi)已經(jīng)接近用戶可接受的范圍了。3. 實(shí)操過(guò)程Flutter 接入 EmbeddingGemma 2 的完整鏈路3.1 環(huán)境準(zhǔn)備與依賴引入開始動(dòng)手前先把工程結(jié)構(gòu)想明白。我的 Flutter 項(xiàng)目采用標(biāo)準(zhǔn)的分層設(shè)計(jì)Dart 層負(fù)責(zé)業(yè)務(wù)邏輯和 UI 狀態(tài)管理底層是一個(gè)自定義插件負(fù)責(zé)和原生推理引擎通信。這個(gè)插件內(nèi)部再拆成兩部分一部分是 Android 端的 TFLite 推理代碼或 ONNX Runtime 推理代碼另一部分是 iOS 端的 Core ML 封裝。為了讓兩端的調(diào)用接口保持一致我在原生層定義了一個(gè)統(tǒng)一方法入?yún)⑹俏谋咀址团渲脜?shù)出參是浮點(diǎn)數(shù)組或批量的浮點(diǎn)數(shù)組。在 pubspec.yaml 里我引入了幾個(gè)關(guān)鍵依賴flutter_platform_channel 負(fù)責(zé)跨端通道tflite_flutter 用于加載 TFLite 模型path_provider 用于管理模型文件的本地路徑shared_preferences 用來(lái)存一些緩存元信息。如果后續(xù)要上復(fù)雜度更高的任務(wù)比如把向量的存儲(chǔ)和管理也搬到本地?cái)?shù)據(jù)庫(kù)可以再加 drift 或者 sqflite。不過(guò)第一次接入時(shí)不建議一次塞太多東西先把最小鏈路跑通再逐步擴(kuò)展。模型文件的管理也值得單獨(dú)說(shuō)。模型文件不能直接放在 assets 目錄然后指望它被一次性加載尤其是幾個(gè)百 MB 的大文件打包時(shí)會(huì)對(duì)安裝包體積造成很大壓力。我的建議是把模型文件作為獨(dú)立下載資源處理App 首次啟動(dòng)時(shí)通過(guò)網(wǎng)絡(luò)下載模型文件到應(yīng)用私有目錄如果已經(jīng)存在則直接使用。這樣可以讓首次安裝包體小很多也方便后續(xù)模型升級(jí)。下載的校驗(yàn)必不可少我一般會(huì)在后端接口里同時(shí)下發(fā)模型文件的 MD5 值A(chǔ)pp 側(cè)在下載完成后做校驗(yàn)不一致就重新下載。3.2 調(diào)用本機(jī)推理的完整鏈路下面直接給出一段我在 Dart 層封裝的推理調(diào)用示例。先看方法簽名FutureListdouble embed(String text) async { final result await _channel.invokeMethod(embedText, { text: text, maxTokens: 512, normalize: true, }); return Listdouble.from(result as List); }對(duì)應(yīng)的原生 Android 側(cè)在 MethodChannel 的 handler 里執(zhí)行 TFLite 的 run 方法。核心代碼邏輯大致是這樣的override fun onMethodCall(call: MethodCall, result: Result) { when (call.method) { embedText - { val text call.argumentString(text) val maxTokens call.argumentInt(maxTokens) ?: 512 val normalize call.argumentBoolean(normalize) ?: true try { val output embeddingService.embed(text, maxTokens, normalize) result.success(output) } catch (e: Exception) { result.error(EMBED_ERROR, e.localizedMessage, null) } } else - result.notImplemented() } }TFLite 這邊我推薦直接使用 tflite_flutter 的 Interpreter因?yàn)樗鼉?nèi)部已經(jīng)處理了很多復(fù)雜的內(nèi)存管理問(wèn)題。在初始化 Interpreter 時(shí)需要把模型文件路徑傳進(jìn)去同時(shí)指定線程數(shù)。線程數(shù)不建議直接拉滿因?yàn)橐苿?dòng)端 CPU 的核心數(shù)有限盲目調(diào)大線程數(shù)反而會(huì)因?yàn)榫€程切換開銷導(dǎo)致性能下降。我在中端設(shè)備上測(cè)試4 線程通常是最優(yōu)解在旗艦設(shè)備上 6 線程反而表現(xiàn)更好。這個(gè)參數(shù)值得做幾次對(duì)比實(shí)驗(yàn)不同機(jī)型的差異會(huì)超出你想象。iOS 端的封裝思路也類似區(qū)別在于底層換成了 Core ML。我會(huì)先把模型轉(zhuǎn)成 Core ML 格式然后通過(guò) IOService 創(chuàng)建預(yù)測(cè)對(duì)象。由于 Core ML 對(duì)輸入的預(yù)處理也有要求我一般會(huì)在原生層完成 tokenizer 和 padding 操作確保喂給模型的輸入矩陣形狀正確。整個(gè)鏈路的完整性可以用一個(gè)流程來(lái)描述Dart 層拿到統(tǒng)一接口之后先做文本長(zhǎng)度判斷如果超長(zhǎng)則作分段分段結(jié)果逐段通過(guò) MethodChannel 發(fā)送給原生層原生層把文本交給模型執(zhí)行推理拿到一組向量后再返回給 Dart 層Dart 層對(duì)向量做歸一化和相似度計(jì)算。每一步的數(shù)據(jù)傳遞都是標(biāo)準(zhǔn) JSON 可序列化的結(jié)構(gòu)所以調(diào)試起來(lái)也非常方便。3.3 性能優(yōu)化與內(nèi)存管理端側(cè)推理最怕兩件事卡頓和內(nèi)存暴漲??D的源頭往往不在模型本身而在線程調(diào)度。Flutter 的 UI 線程和后臺(tái)線程之間如果頻繁切換會(huì)引發(fā)不必要的上下文切換開銷。最有效的做法是讓推理全程保持在原生層后臺(tái)線程Dart 層只負(fù)責(zé)發(fā)起請(qǐng)求和接收結(jié)果不做任何密集計(jì)算。Dart 的 Future 本身就是異步模型配合原生層的 Handler 或 DispatchQueue可以做到“UI 無(wú)感知”的推理。內(nèi)存管理方面有一個(gè)容易被忽略的細(xì)節(jié)TFLite 的 Interpreter 每次執(zhí)行完成后會(huì)保留一些中間張量緩存。如果你反復(fù)創(chuàng)建新的 Interpreter 對(duì)象內(nèi)存就會(huì)像滾雪球一樣漲起來(lái)。正確做法是把 Interpreter 設(shè)計(jì)成單例整個(gè) App 生命周期內(nèi)只初始化一次。需要處理不同模型時(shí)可以準(zhǔn)備一個(gè) ModelManager 類按需加載和釋放而不是每次調(diào)用都新建。還有一個(gè)跟垃圾回收相關(guān)的問(wèn)題。Dart 把 List 傳遞給原生層時(shí)會(huì)發(fā)生內(nèi)存拷貝。如果文本批次很大拷貝開銷會(huì)非常明顯。我的優(yōu)化方案是使用 Float32List 這類 TypedData 類型減少裝箱和拷貝成本。原生層返回值時(shí)也盡量使用 Float32Array 之類的緊湊類型而不是 List 或 NSArray這樣可以在通道傳輸時(shí)直接復(fù)用底層內(nèi)存減少一次轉(zhuǎn)換。在設(shè)備發(fā)熱問(wèn)題上我也做了一些取舍。長(zhǎng)時(shí)間連續(xù)調(diào)用模型手機(jī)會(huì)明顯升溫尤其是舊款設(shè)備。我的策略是增加一個(gè)冷卻機(jī)制連續(xù)推理一定次數(shù)后自動(dòng)暫停隊(duì)列并等待幾秒同時(shí)把模型的頻率限制在一個(gè)合理水平。這種限制對(duì)交互型應(yīng)用來(lái)說(shuō)影響不大但對(duì)后臺(tái)批量索引任務(wù)來(lái)說(shuō)非常關(guān)鍵否則會(huì)因?yàn)檫^(guò)熱降頻反而拖慢整體速度。4. 應(yīng)用場(chǎng)景拆解AI Edge Foresight 能做什么4.1 語(yǔ)義搜索與本地知識(shí)庫(kù)把這個(gè)組合用在本地語(yǔ)義搜索上是第一個(gè)讓人眼前一亮的效果。傳統(tǒng)的關(guān)鍵詞搜索只能匹配字面相同的詞比如用戶搜“貓咪”搜不到“貓貓”。但嵌入模型把兩邊都轉(zhuǎn)成向量之后語(yǔ)義上相近的內(nèi)容可以很輕松地被召回。實(shí)際做項(xiàng)目的時(shí)候我在本地用 SQLite 存了向量數(shù)據(jù)和原始文本然后通過(guò)余弦相似度來(lái)排序效果比用 LIKE 查詢好了一個(gè)量級(jí)。SQLite 本身沒(méi)有向量索引但數(shù)據(jù)量在萬(wàn)級(jí)以內(nèi)時(shí)線性掃描幾萬(wàn)條向量的耗時(shí)也就是幾十毫秒完全夠用。如果數(shù)據(jù)量到了十萬(wàn)級(jí)就可以引入本地向量索引例如先聚類再檢索避免每一次都全表掃描。這里要特別強(qiáng)調(diào)一下召回與排序的區(qū)分。EmbeddingGemma 2 生成向量只負(fù)責(zé)“召回”也就是從庫(kù)里找出候選內(nèi)容而最終的排序往往需要結(jié)合其他業(yè)務(wù)規(guī)則比如時(shí)間權(quán)重、用戶偏好、內(nèi)容熱度。千萬(wàn)不要指望一個(gè)向量模型把所有排序問(wèn)題都解決掉。我自己的實(shí)現(xiàn)是兩階段第一階段用向量相似度召回 Top 50第二階段用一套輕量級(jí)打分公式把時(shí)間衰減、點(diǎn)擊反饋、手動(dòng)置頂?shù)纫蛩丶舆M(jìn)去得到最終 Top 10。這套思路在工程上非常好擴(kuò)展也更容易解釋給產(chǎn)品同學(xué)聽。另外在無(wú)網(wǎng)條件下端側(cè)語(yǔ)義搜索的價(jià)值會(huì)被徹底放大。比如在地鐵、飛機(jī)、國(guó)外漫游沒(méi)有流量的時(shí)候用戶依然可以檢索自己的本地筆記、收藏夾、通訊錄。這種能力不是云端方案的簡(jiǎn)化版而是一種全新維度的產(chǎn)品體驗(yàn)。我自己在飛機(jī)上實(shí)測(cè)過(guò)離線狀態(tài)下全文檢索加上本地語(yǔ)義糾錯(cuò)響應(yīng)速度反而比在線搜索更快因?yàn)闆](méi)有網(wǎng)絡(luò)包的封裝、排隊(duì)、傳輸和解析過(guò)程。4.2 內(nèi)容理解與分類打標(biāo)除了搜索內(nèi)容理解是 EmbeddingGemma 2 的第二個(gè)殺手锏。在很多本地筆記類 App 里用戶需要自動(dòng)把筆記分到“工作”、“生活”、“學(xué)習(xí)”等等級(jí)分類中。傳統(tǒng)做法是維護(hù)一個(gè)關(guān)鍵詞詞表然后做規(guī)則匹配但遇到“周末去圖書館看了本關(guān)于營(yíng)銷的書”這種句子規(guī)則匹配很容易失效。向量化之后你可以先用少量標(biāo)注樣本給每個(gè)類別生成一個(gè)“類別原型向量”然后對(duì)待分類文本的向量和類別原型向量做相似度比較選最高的那個(gè)作為預(yù)測(cè)類別。這個(gè)方案不僅輕量而且可解釋性也不錯(cuò)因?yàn)槊總€(gè)類別的原型向量可以可視化出來(lái)方便業(yè)務(wù)同學(xué)理解模型劃分的內(nèi)在邏輯。實(shí)際實(shí)施時(shí)我發(fā)現(xiàn)類別原型向量如果只用少量樣本生成容易有偏差。更好的做法是給每個(gè)類別收集幾十條典型樣本分別向量化然后求平均。類別數(shù)量越多原型向量之間的分界面就越復(fù)雜此時(shí)可以在向量之上再接一個(gè)輕量級(jí)分類器比如邏輯回歸或決策樹。模型本身依然跑在端側(cè)分類器參數(shù)也內(nèi)置在本地文件里整個(gè)過(guò)程仍然可以完全離線完成。這樣既保留了端側(cè)的低延遲也在精度上比簡(jiǎn)單的原型匹配高不少。這個(gè)能力還有一個(gè)延伸應(yīng)用給內(nèi)容做“新鮮度”判斷。對(duì)于新聞?lì)?App用戶希望第一時(shí)間看到新事件對(duì)于知識(shí)庫(kù)用戶可能更看重經(jīng)典內(nèi)容。通過(guò)把時(shí)間信息轉(zhuǎn)化成一種權(quán)重特征再和文本向量拼接就能訓(xùn)練出一個(gè)端側(cè)的小型排序模型。這種方式比純粹用規(guī)則靈活很多因?yàn)樗軌蜃詣?dòng)從用戶的點(diǎn)擊行為中學(xué)習(xí)到底哪些內(nèi)容對(duì)當(dāng)前用戶來(lái)說(shuō)是“新鮮且有用”的。當(dāng)然端側(cè)的個(gè)性化學(xué)習(xí)不能做得太重一般我會(huì)采用每隔一段時(shí)間下載一次增量權(quán)重的方式而不是在設(shè)備上實(shí)時(shí)訓(xùn)練。4.3 個(gè)性化推薦與異常檢測(cè)再往下聊就得說(shuō) AI Edge Foresight 里那個(gè)“Foresight”了。所謂預(yù)判能力我的理解是把用戶的歷史行為向量化然后預(yù)測(cè)下一步可能的意圖。舉個(gè)典型的例子用戶在一個(gè)閱讀類 App 里連續(xù)看了三篇關(guān)于“裝修風(fēng)格”的文章端側(cè)模型就可以提前把“北歐風(fēng)”、“收納”、“采光設(shè)計(jì)”等相關(guān)話題的文章向量加載到本地緩存里等用戶真正搜索時(shí)這些候選已經(jīng)處于“熱備”狀態(tài)點(diǎn)擊即可出現(xiàn)在結(jié)果前列。這個(gè)預(yù)判過(guò)程完全發(fā)生在本地不需要把用戶的閱讀歷史上傳到服務(wù)端隱私邊界非常清晰。異常檢測(cè)是另一個(gè)容易被忽視的場(chǎng)景。比如本地照片應(yīng)用可以用文本向量對(duì)照片備注和 GPS 信息做聚類當(dāng)出現(xiàn)一個(gè)偏離用戶常規(guī)軌跡的聚類時(shí)比如突然出現(xiàn)了大量同一地點(diǎn)的照片可以觸發(fā)一次遷移學(xué)習(xí)或提示用戶整理相冊(cè)。這個(gè)功能聽起來(lái)不算“硬核”但恰恰是端側(cè) AI 的優(yōu)勢(shì)所在它可以持續(xù)地、靜默地在后臺(tái)工作不用在意網(wǎng)絡(luò)可用性也不會(huì)因?yàn)槊看螖?shù)據(jù)上傳而消耗用戶的電量。我自己的體會(huì)是AI Edge Foresight 并不強(qiáng)調(diào)模型本身有多“聰明”而是強(qiáng)調(diào)系統(tǒng)對(duì)用戶意圖的響應(yīng)速度。它像是給 App 裝了一雙“近視眼鏡”能看清用戶手邊的內(nèi)容而不需要每次都抬頭望云端。從產(chǎn)品維度來(lái)說(shuō)離線可用、隱私安全、毫秒級(jí)預(yù)測(cè)這三點(diǎn)結(jié)合起來(lái)才是這套架構(gòu)真正的護(hù)城河。5. 常見問(wèn)題與排查實(shí)錄5.1 模型加載失敗這個(gè)坑估計(jì)所有入坑端側(cè) AI 的朋友都踩過(guò)。現(xiàn)象是 App 啟動(dòng)后調(diào)用原生推理接口立刻拋出一個(gè)類似 “Failed to load model” 的異常。原因通常有兩個(gè)一是模型文件路徑不正確二是模型文件格式損壞。路徑不正確多半是因?yàn)?Flutter 的 assets 目錄在原生層的訪問(wèn)方式不同你需要先把 assets 文件復(fù)制到應(yīng)用私有目錄再傳給原生層不能直接把 “assets/xxx.tflite” 字符串給 Interpreter。我踩過(guò)一次很隱蔽的坑Android 的 assets 解壓時(shí)會(huì)把目錄結(jié)構(gòu)保留但 iOS 的 bundle 里路徑大小寫不敏感一旦文件名寫錯(cuò)大小寫模擬器上能跑真機(jī)上就崩。排查這類問(wèn)題我的建議是分三步走先確認(rèn)文件是否存在檢查文件大小是否正常再用一個(gè)最小的測(cè)試工程直接加載該模型排除 Flutter 層干擾最后檢查模型內(nèi)部是否有自定義算子。如果是自定義算子TFLite 解析時(shí)可能會(huì)報(bào) “Op not found”這時(shí)候就需要重新導(dǎo)出模型時(shí)把這些算子替換成標(biāo)準(zhǔn)算子。不要嫌麻煩多數(shù)模型加載問(wèn)題都是細(xì)節(jié)導(dǎo)致的。5.2 推理速度慢推理速度上不去最直接的原因通常是模型沒(méi)有量化或者設(shè)備沒(méi)有正確使用加速硬件。如果你在桌面級(jí)模擬器上跑得很流暢一到真機(jī)就慢得離譜那多半是原生推理引擎沒(méi)有使用 GPU 或 NPU 代理。TFLite 里可以使用 GPU delegate但并不是所有算子都能在 GPU 上執(zhí)行如果模型里存在不支持的算子TFLite 會(huì)自動(dòng)回退到 CPU而且回退過(guò)程會(huì)打印一行警告很容易被忽略。還有一個(gè)經(jīng)常被忽略的因素設(shè)備過(guò)熱后降頻。我有一臺(tái)測(cè)試機(jī)在連續(xù)跑五分鐘推理后單次推理耗時(shí)從 40ms 漲到了 90ms。后來(lái)我加入了散熱控制和推理任務(wù)分批機(jī)制情況才好轉(zhuǎn)。從架構(gòu)角度看推理性能調(diào)優(yōu)必須結(jié)合具體機(jī)型的算力特點(diǎn)去調(diào)不能只盯著模型本身。建議在實(shí)際測(cè)試時(shí)準(zhǔn)備幾臺(tái)覆蓋中端和旗艦的設(shè)備分別統(tǒng)計(jì)推理耗時(shí)和內(nèi)存占用形成一個(gè)基礎(chǔ)性能基線表。后續(xù)每一次模型版本升級(jí)都用同一組基線數(shù)據(jù)來(lái)做對(duì)比才能客觀判斷模型是不是變慢了。5.3 包體積爆炸這是 Flutter 應(yīng)用接端側(cè)模型最容易遇到的問(wèn)題。一個(gè) 100MB 的模型文件直接放進(jìn) assets打包后 APK 體積瞬間膨脹。解決方式在 3.1 已經(jīng)提過(guò)就是改成動(dòng)態(tài)下載。這里再補(bǔ)充兩個(gè)細(xì)節(jié)一是動(dòng)態(tài)下載需要考慮斷點(diǎn)續(xù)傳和網(wǎng)絡(luò)狀態(tài)變化建議使用后臺(tái)下載服務(wù)而不是簡(jiǎn)單用 HTTP 庫(kù)直接拉二是模型版本管理和 App 版本管理要解耦模型可以單獨(dú)發(fā)布升級(jí)不需要強(qiáng)制用戶升級(jí) App 才能獲得新模型。還有一個(gè)容易被忽視的體積隱患Flutter 插件本身可能引入一些不必要的原生庫(kù)。比如你為了跑 TFLite 引入了全套 TensorFlow Lite 支持庫(kù)其中包含了很多你用不到的算子包。這種情況下你可以通過(guò) Gradle 的 ABI 過(guò)濾只保留 arm64-v8a 架構(gòu)同時(shí)移除 x86_64 等不用的架構(gòu)安裝包能立刻瘦身不少。iOS 端則可以檢查是否引入了冗余的 bitcode 支持配合 Xcode 的編譯設(shè)置把不需要的架構(gòu)裁剪掉。6. 一些經(jīng)驗(yàn)體會(huì)折騰完這個(gè)項(xiàng)目我最深的感觸是端側(cè) AI 真正難的不是算法而是工程整合。Flutter 和 EmbeddingGemma 2 的組合本質(zhì)上是一次“跨端殼層 本地模型運(yùn)行時(shí)”的聯(lián)姻需要你同時(shí)懂 Dart 層的內(nèi)存管理、原生層的線程調(diào)度、模型轉(zhuǎn)換工具鏈的細(xì)節(jié)還要有耐心去一臺(tái)一臺(tái)真機(jī)上驗(yàn)證表現(xiàn)。沒(méi)有哪個(gè)環(huán)節(jié)是能靠讀文檔直接跳過(guò)的。如果讓我給出一個(gè)最想強(qiáng)調(diào)的建議那就是先把最小可用鏈路跑通再考慮性能優(yōu)化和功能擴(kuò)展。我見過(guò)太多人一上來(lái)就研究怎么把模型量化到 4bit、怎么上 NPU、怎么構(gòu)建多模態(tài)識(shí)別結(jié)果基礎(chǔ)通道都沒(méi)打通。先讓一句話進(jìn)入模型再收到一個(gè)像模像樣的向量這個(gè)正向反饋建立起來(lái)之后整個(gè)系統(tǒng)的復(fù)雜度曲線會(huì)變得非常清晰后面不管加什么功能都只是在這個(gè)鏈路上增加分支而已。最后再分享一個(gè)小技巧模型輸出的向量多留一份原始值做備份。端側(cè)模型升級(jí)后新舊向量之間可能出現(xiàn)空間偏移這時(shí)候如果保留舊版本向量可以做向量空間的對(duì)齊測(cè)試快速評(píng)估升級(jí)帶來(lái)的影響。這個(gè)小動(dòng)作不復(fù)雜但能在模型迭代時(shí)省下非常多排查時(shí)間。希望這篇文章能給正在琢磨 Flutter 加端側(cè)嵌入模型的朋友一些參考也歡迎大家在自己的項(xiàng)目里有更巧妙的實(shí)踐時(shí)回頭來(lái)互相印證。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
超碰九7| 午夜亚洲WWW湿好大| 天天做天天爽| 女生久久网| 一区二区偷拍拍视频| 91丝袜人妻| 五月婷婷AV| 激情欧美97| 6080yy午夜理论三级一区二区三区无码| 精品在线78| 欧美婷婷久久| 欧美在线观看综合国产| 97免费在线观看| 老女人91| 久久久亚洲精品电影免费看| av网站在线观看了| 蜜臀99久久精品| 久久五月丁香| 色呦呦呦在线观看视频| 国产精品操| 久久久久密臀视频| 久久超碰98| 色香色欲天天综合网天天来吧| 国产精品久久久久久久久久梁医生| 动漫区日韩区欧美区| 韩国午夜理伦三级好看| 大奶啊啊好爽| 大香蕉免费中文| 超碰av人人人| 国产精品成人无码av| 午夜欧美精品久久久| 一牛影视久久久一区二区三区| 18禁免费视频| 97超碰磁| 人妻81p| 国产精品白丝| 羞涩视频| 男人的天堂午夜av| 久久精品欧美一区二区三区不卡| 九九AV| 久久精品一区二区| 爱妃国产亚洲视频中文字幕| 黄在线| a片在线播放| 88在线一区二区三区| 制服诱惑亚洲一区二区三区在线观看| 久久亚洲天天做| 午夜男女爽爽爽在线视频| 91三级理论片播放器| 黄骗免费网站| 乱伦熟女专区| 色噜噜狠狠色综无码久久| 天天干2019| 97爱欧美| 爱干爱射网啊啊啊| 嗯阿好爽好紧| 农村妇女精品一区二区| 亚州精品人妻一二三区| 午夜久久久| 91美女视频在线免费观看| 少妇内射视频| 亚洲AV色图一区| 超碰色美女| 久久成人午夜狠狠| 粉嫩AV一区二区夜夜| 极品白嫩美少妇在地板上位骑射淫水泛滥| 亚洲日韩在线a不卡99精品| 午夜国产综合视频在线观看 | 竹菊影视国产一区二区| 精品久久久高清无码| 天堂种子在线www网资源| 国产伦乱91| 亚洲图片 91| 巨爆乳肉感一区二区三区竹菊影视| 国产11页| 蜜臀一二三区| 欧美αv.com| www.超碰| 欧美97日韩| 国产精品高朝久久久久久久| aV中亚| 日本女优在线视频福利| 亚洲AV无码| 加勒比久久av| 黑丝自慰喷水网站| 人人爽人人精品乱人伦AV| 欧美亚洲成人在线一区二区三区| 亚洲国产精品久久AV| 久操电影| 国产亚洲精品自在线亚洲情侣| 精品无码久久久| 日日日日做夜夜夜夜做无码97| 尤物网站91| 女人高潮抽搐喷水视频网站| 国产999精品久久久| 大色综合| 激情五月婷婷| 色69大色97香蕉| 一区二区三区美女超清| 美女超碰978| 97在线亚洲| 日韩乱伦AⅤ| 三级片大波波| 亚洲国产精品久久AV| 天堂8在线新版官网| 午夜天堂精品久久| 性欧美999| 国产日韩手机视频在线| 中文字幕超碰CAO| 97干97色| 欧美美女啪啪视频| 国内偷拍精品一区二区| 五月色网| 97在线播放| 黄片不用下载在线观看| 欧美综合 站| 9丨久久九九九 | 另类欧美| 久久香蕉综合一本到3atv| 激情网五月天| 青青草久草AV| 九九探花视频在线观看| 91最新综合| 免费啪啪av| 欧美 亚洲 综合 制服 另类| 国产亚州精品美女久久久免费| 少妇99| 欧美国产精品| 老熟乱一区二区三区四区| 国产97视频免费观看| 97情超碰色| 久久久久久久九九九九九九| 国产11页| 日韩操啪| 91在线/欧洲| 中文自拍欧美影视| 99re超碰| 中文字幕版| 国产精品久久久久无码Av网曝门| 亚洲高清在线se| 亚洲图片偷拍视频区| 欧美亚洲厕所精品偷拍91| 巨爆乳一区二区爆乳区| 97超碰欧美手机在线| 亚洲激情网| 亚洲 无码 偷拍| 国产不卡中文字幕免费avi| 天堂v无码免费视频| 爱我干综合| 欧美综合综合| 欧洲免费一区二| 亚洲男人天堂av| 国产一区二区三区不卡手机在线| 亚洲午夜AV| 蜜臀久久99精品久久久久电影| 9999久久久久| 国产乱伦亚洲色图高清无码| 国产热av| 亚洲精品欧洲精品| 深爱五月婷婷| 国产乱伦性爱区| JuliaAnnXXX888| 伊人久久亚洲中文字幕| 99热伊人| 岛国黄| 伊色久人大在线| 欧美天堂日韩三级国产传媒| 亚洲精品中文字幕一区在线视频 | 啊视频在线| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 激情四射五月天| 国产麻豆福利av在线播放| 欧美色97| 日韩综合97P| 亚洲欧美一区二区三区在钱蜜桃| 欧美在线干| 超碰97综合在线| 少妇蹲下买菜露大唇0| 超碰色综合| 日韩黄色一区二区三区| 啊啊啊好舒服视频| 亚洲午夜免费狠狠干| 精品人妻中文字幕高清| 欧美色66| 蜜桃臀AV在线| 伊人aaa| 丁香五月AV| 国产高清在线观看欧美| 家庭乱伦国产| 东京热视频网| 免费人成毛片乱码| 一本久道久久综合狠狠爱一密臀精| 91综合国产精品| baisiav| 91久久久久久| 蜜臀久久99精品久久久老,,| 五月激情综合网| 黑人黄片在线免费观看| 亚洲精品视频在线播放| 熟女乱伦二区| www久久久| www.色综合| 久久三| 亚洲精品aa久久伊人| 岛国网址国产| 欧美特大黄一级片片免费| 无码av永久免费专区网站| 人妻干天天| 免费看黄片现成| 97香蕉网| 国产极品粉嫩馒头一线天av| 日韩性爱一级片| 天天看片青娱乐| 亚州色综合| 国产白丝AV| 亚洲日韩AV视色| 爽 好舒服 无码刺激久久| 亚洲二区精品在线观看| 9 9精品一区二区三区| 欧美刺激色黄片免费看| 人人操AV| 精品.99999| 欧美色图天堂网m| 欧美性区| 啊啊啊慢点| 九九九免费视频| 国产精品黑人一区二区三区| 人人操人人摸人人看人人插| 强奸a片网| 精品超碰国产| 黄色二级片网站| 人妻在线大香蕉| 人妻超碰青青草98| 日本506070| 中文字幕在线免费观看2| 国产精品亚洲免费| 一道本东京热加勒比一区二区三区| 日本一区二区三区精品| 久久久91福利姬| 久操免费观看| 欧美一区二区三区另类精品| 你操综合| 色香网| 欧美人与动性人交a| 成人精品久久久午夜福利| 九月丁香综合网| 九九九九九九九精品视频| 蜜桃久久久久久久| 日天天九九天堂666| 天天综合亚洲综合| 91黑人无码激情在线| 人妻啊啊人妻啊啊| 综合熟妇一区二区三区| 99精品欧美一区二区三区桃色| 大香蕉久操| 亚州人妻| 另类成人首页一区| av网站国产主播在线| 亚洲一区二区精品福利| 久久一二三四不卡 | 亚洲美乱| 亚欧美色图| 一区AV| 99性视频| 少妇精品久久久八区九区| 熟妇综合一区二区三区| 五月天婷婷成人网| 99少妇| 精品成人动漫一区二区| 99抽插| 91综合中文字幕| A片 AV一级在线播放观看免费 | 91美女视频| 亚洲制服欧美另类内射| 97操在线| 亚洲国产婷婷在线播放| 大香网伊人久久综合网eew| 亚洲欧美日韩不卡人妻| 天天躁日日躁XXXXYY| 欧美另类自拍 | 综合97亚洲| 亚洲欧洲成人在线电影| 九九在线精品| 97se亚洲| 韩国黄色片精品久久久| 青青草一区二区三区四| 韩国一级做A片免费的| 精品人妻一区春色| 免费的黄片有限公司| 天天干天天日天天射黄色| 风间由美日韩欧美久久| 欧美熟爽综合| 学生妹天天看| 日本999精品视频| 亚洲天堂资源在线| 大香蕉97久久| 国产激情视频一区区三区| 美国一区二区三区视频| 国产精品午夜福利视频| 欧洲成人性爱视频| 伊人久日| 亚洲最大91网| 国内精品嫩模A∨私拍小视频| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 97国产中文| 免费簧片在线观看| 淫淫综合网| 淫淫总合网| 国产成人拍国产亚洲精品| 神马久久久久久久久久| 乱伦日本色图AⅤ| 色路综合| 青青草日逼视频| 综合激情二| 午夜福利在线合集| 久草婷婷| 51久久夜色精品国产麻豆| 殴洲老熟女| 午夜黄色免费在线观看| 久久久久久久97| 熟妇女人妻呻吟久久AV| 美中日韩无码| 日夜精品| 蜜臀亚洲综合一二三四区| 91天堂色男人的天堂| 懂色Av一区二区三区| 成人日韩中文字幕| 无码日韩网站| 亚洲成人激情小说视频| 色爽——AV| 蜜臀久久99精品久久久老,,| 97人妻免费中文字幕| 中文字幕av一区二区三区人妻少妇| 国产精品色色| 国产欧美成人第一页在线观看| 中文精品少妇天堂| 97色涩| 91久久久久久久| 操屄日韩| 理论久久婷婷网8| 九九九九九九成人| 日韩免费人妻色情网站| 性爱1区| 日韩在线欧美精品一区二区| 国产一区二区精品久久久不卡蜜臀| 99re这里只有精品3| 欧美亚洲中文字幕| 欧美一区二区三区四区综合| 蜜臀99久| 日本午夜操逼| 欧美18老人禁| 啊啊啊好舒服视频| 国产精品对白自产拍| 欲射影视| 亚洲激情色片 | 欧美日韩亚洲天堂| 大逼色网站| 97欧美色综合| 久久m| 欧美色997| 嗯啊不要在线| 久久婷婷色| 无码WWW免费视频网站| 久久性爱视频免费看| 91亚洲最新在线| 久久久久久久久国产| 樱花草社区www中国| 极品丝袜无码| 日本91白丝| 99色色网| 九九九九九九九精品视频| 国产亚州精品美女久久久免费| 蜜臀AV秘一区翔田千里| 在线人成亚洲视频免费观看| 天天澡天天狠天天天做| 天天伊人| 国产精品久久久吖| 51久久夜色精品国产麻豆| 亲子敌伦对白在线播放| 国产精品视频在线观看| 久久午夜色播影院免费高清| 久久青青草在线视频| 91天天综合日韩欧美| a啊啊啊啊啊啊啊啊一区二区| 十八禁电影伊人网| 伊人嫩草| 久久人妻| 久久男人精品| 国产又粗又长又爽又色| 日欧操屄视频| 97九色人妻| 嗯啊啊啊轻点视频| 国产天美传媒精品| 亚洲欧美综合网站| 欧美中出| 丁香六月激情| 激情五月天色色网| 97天天爽| 久久中日麻豆| 尤物视频新赏网鲜网色诱网| 少妇蹲下露出大唇5| 中文一区二区三区影院| 嫩呦国产一区二区三区AV| 视频黄色国产一级| 午夜色婷婷| 熟女性视频| 天天摸天天碰天天添青青| 新精精品久久精品| 久久精品国产亚洲粉嫩| 欧洲亚洲国产综合在线| 图片区小说区| 欧美|91色综合| 久9久9精品| 黄页网站成人免费| 九月婷婷久久| 国产高清不卡视频| 久久久久99精品成人片蜜臀| 无遮挡一级毛片视频免费的| 韩国一级做A片免费的| 色色99| 欧美国产有色电影| 久久久久久九| 亚洲古典另类欧美在线| 天天综合日韩网| 亚洲激情色片 | 久久精品店| 天天91~综合入口| 欧美综合网1| 亚洲资源站| 日韩一级特黄av毛片| 精品国产一区二区三区av在线资源| 一区 欧美 日韩 麻豆| 99热这里都是精品| 日本视频一区二区三区| 蜜臀亚洲中文| 熟女熟妇一区二区三四区| 操逼片国产| 色妹子A V| 少妇人妻在线| 日韩无码a片| 超碰性爱97| 欧美成人精品欧美一级乱黄一区二…| 激情无码日韩| 韩国女主播青草在线| 亚洲美女精品九九视频| 懂色AV蜜臀无码精品APP| 久久国产视频专区一二三| 日本在线999| 亚洲欧美中文一区二区三| 精品v1区| www.亚洲黄色| 嗯嗯啊啊啊好舒服| 熟女探花啪啪| 青青草自拍视频在线播放| 99这里只有精品| 日韩一级成人毛片免费观看| 久久视频少妇美女| 色翁荡息又大又硬又粗又爽| 春色校园综合网| 免费人成毛片乱码| 日韩少妇丰满亚洲| 嫩呦国产一区二区三区AV| 男人的天堂在线2| 91在线视频国产网站| www.婷婷| 91丝袜在线观看| 青青草视频久久| 中文字幕一区二区无码成人| 91碰碰| 色臀AV| 99这里只有精品| 日夜伊人网| 久久国产99精品72福利| 久久久新亚洲AV| 国产视频一区二区在线观看| 在线日韩精品一区二区三区| 一区麻豆 高清中文字幕| 欧美呦呦性爱| 大香蕉青青9| 激情视屏国产乱伦强奸| 天美av在线| 国产黄色小视频网站| 60秒试看最爽10分钟网站| WWW操逼| 亚洲熟女乱色一区二区三区久久久 | 蜜乳AV一区| 午夜呻吟欧美| 青青操综合网| 香蕉精品二区二区| 男人下部插入女人下部| 午夜一区二区三区国产| 麻豆色约约| 久久国产精品一级二级三级| 影音先锋每日最新资源在线观看| 亚洲欧美日韩电影网站一区| 免费视频a级毛片免费视频| 99少妇内射| 熟妇人妻一区二区| 强奸乱伦动态污图免费 | 天天草天天干天天日| 亚洲欧美碰碰| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 日韩丝袜高跟制服在线观看| 欧美日韩99| av网站免费线看| 丝袜天堂网| 四虎影库国产精品免费| 玖玖玖玖精品国产剧情| 蜜臀99久久精品久久久懂爱| 亚洲精品97中文字幕| 亚洲天堂,男人| 第四色奇米影视777| 99视频自拍区| 中文字幕人妻色偷偷久久皮| 91久操| 久热影视| 97Ai亚洲| 伊人国产AV| 天美精品一区二区三区四区在线观看| 99精品在线| 欧美一区二区三区入口| av黄图片在线观看| 另类欧美综合| 国产精品在线一区二区| 人妻一区久久二区三区色播| 99热欧美| 久久久精品视频免费观看| TS人妖另类精品视频系列| 亚洲国产精品久久久久婷婷老年| 麻豆黄色五月天| 久久女婷| 操婷婷逼| 亚洲成人福利电影免费| 日韩综合成人免费视频| 国产色图乱伦| 欧美天天干| 久久久月天| 天天综合麻豆视频| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 久热这里只有精品9| 91亚洲丝袜| 久久精品国产久精国产| 欧美性爱一区| 青青草精玖玖69精品| 欧美 亚洲 制服 精品| 色婷婷九月| 亚洲成A∨人影院在线欢看| 波多野结衣一级视频| 大屁股人妻女教师撅着屁股| 97无码视频在线播放| 无码人妻一区二区三区免费九色| 一卡二卡三卡| 91美女片在线| 97在线观| 国产色图乱伦| 91被操| 韩国手机不卡无码三级视频| 收看日本人日bb| 不卡av在线中文字幕| 懂色中文一区二区三区| 国产精品盗摄 偷窥盗摄| 欧美Ⅴ性爱| 无码一区免费在线不卡| 92性色国产午夜福利在线661| 精品无码秘 人妻一区二区| 国产在线观看一区二区三区| 精品久久久久久AV无码| 国产h片在线观看视频| 日韩卡一卡二卡三在线| 人妻熟女av国产网站| 99综合网| 91丝袜美女| 亚洲男人天堂2016| 久久9精品网站| 91N综合网| 97超碰超碰| 亚洲精品一区二区精品| 秋霞影音一区二区三区| 婷婷激情五月综合| 亚洲狠狠入| 91亚洲网站| 一级黄色性爱裸体视频| 强奸抽插av| 日韩精品在线观看观看| 欧美黄色大香蕉一区二区| 91美女中出| 91麻豆天美传媒HD| 欧美亚洲高清晰| 亚州男人天堂| 国产99精品一区二区三区免费| 亚洲欧美国产成人综合不卡| 亚洲欧美精品一区天堂久久 | 亚州欧美色图| 中国国产精品一区视频| 免费一级视频特黄色大片| 九九九综合精品| 色97综合中文字幕| AAAA欧美日韩| 日本国产成人亚洲精品无码| 青青草国产亚洲精品久久| 久久美国毛片| 26uuu久久| 免费在线观看AV无码网站| 欧美老熟另类| 99久久99九九99九九九| 亚洲无无码αⅴ每日更新| 久久九九综合| 九九热精彩视频| 天天综合91| 日本日逼视频网| 樱花草社区www中国| 久久久青青草| 亚洲欧美国产成人综合不卡| 91成人在线| 丰满人妻一区二区三区免费 | 麻豆激情综合| 97香蕉网| 一二三四免费视频| 欧美天天影院| 夜嗨影院| 91久久国产综合精品| 精品九九九九九| 国产精品自产拍在线观看社区| 国产夜夜操| 久久人妻熟女一区二区| 白嫩国模丰满一二三区| 国产 大胆 对白| 国产精品成久久久久午夜午夜| 久/久精品99看9| 亚洲文学偷乱拍啪啪啪啪| 凸凹视频在线观看| 综合激情一一91| 婷婷丁香九月| 亚洲欧美日产国产91毛片| 十八禁啪啪视频| 色蜜AV| 久久久精精精| 熟妇在线视频一区二区| 中文字幕乱妇免费视频| 色丁香五月婷婷| 黑人性欧美| 超碰人人色| 亚洲资源一区| 9久综合网| 91人妻在线视频| 色香阁在线| 亚洲人成在线放东京热| 欧美后进式| 欧美色图20P| 九九热精品| 人妻久久一区二区三区 | 狠狠超| 色性荡荡荡荡视频| 欧美gv在线观看| 久久蜜色情在线视频xxx免费观看| 翔田千里爆乳巨臀无码| 超碰97最新人妻| 91快色色色色色| 日日嗷| 色婷婷在线视频| 性综合网| 精品久久久不卡一区二区| 色综合av男人天堂| 农村少妇久久久久久久| 久久婷婷色综合一区二区三区| a级免费在线观看| 97超级欧美| 欧美疯狂做爰xxxx| 91另类| 乱老熟女一区二区三区| 入口操逼网站| 国产精品白丝| 亚洲图片 激情小说| 色色色99| 大香蕉乱级| 精久久久| 亚洲男人天堂2012| 最新啪啪视频| 97久久久| 97欧美色综合| 久热久一区二区三区| 欧美日韩精品一区二区三区高清| 欧美性色欧美| 国产成人AV麻豆| 婷婷伊人綜合中文字幕小说| 免费视频在线一区二区不卡| 九九九九九九免费视频| 91肏屄网| 欧美精品1区2区3区| 日韩熟女三十乱伦| 精品一区二区2| 欧美亚洲20p| 91色久| 久思思热视频在线观看| 亚洲男人天堂AV| 欧美久久久| 国产精品青青草| 狠狠激情综合狠狠操中文字幕| 日韩特级毛片免费观看全集| 久久精品国产97欧美精品亚洲| 国产视频一区二区在线观看| 日韩黄色成人性爱| 久久天天艹| 97日韩| 精品成人亚洲午夜电影| 色约约一区=区三区| 97综合国产精品高潮久久| 午夜免费福利视频一区| 无码精品久久久天天影视| 亚洲97在线| 51一区二区三区| 青青青青草av在线观看| 又黑又大又粗| 99视频内射三四| 久久草在线综合视频| 国产美女裸体秘 永久无遮挡| 啊啊啊爽爽| 久久爱97| 欧美综合1性辶| 熟女一区二区三区四区| 啊啊啊啊啊啊啊网址在线观看| 99re8超碰| 久久手机视直播| 天天欧美色| 五月天色五月| 99色在线视频| 丁香五月天啪啪| 综合五月婷婷| 日本福利二区视频| 国产女性无套 免费观看| 国产av又色又爽又黄| 国产一区二区三区白丝| 色y情视频免费看| 91一区二区三区蜜桃| 国产精品高潮久久久无码| 玖玖综合网| 大香蕉99999| 密臀视频三区免费网站| 97免费视频在线| 日日骚中文字幕| 色香AV| 男女啪啪网站免费视频| 一区二区三区免费视频入口| 欧美福利视频啊啊啊啊| 九九热久久99精品re| 午夜福利激情在线视频| 欧美十八禁导航成人| 亚洲?V无码专区在线电影| 亚洲欧美人妻| 日韩免费簧片| 日本一区视频在线观看| 乱伦av麻豆| 亚洲AV无码久久久国产精品| 97精品综合久久| 91人妻人人妻| 啊啊啊好舒服好爽啊啊啊视频| 久久久久9999妇女| 男人的天堂无码| 综合五月天| 免费AV中文网在线观看| 操逼日批| 天天躁日日躁XXXXYY| 屌逼麻豆| 大香蕉99热| 夫妻AV网站| 色吧91| av在线不卡一区二区三区| 日本在线视频导航| 九九热男人天堂| 日韩天天本| 玖玖久久久| 91香蕉视频在线观看免费| 久久6热视频免费观看| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 亚洲五月婷婷| 性欧美天天| 中文字幕在线第二页| 国产精品熟女一区二区三区| 亚洲伊人a线观看视频| 色一情一乱一乱一区91Av| a男人的天堂| 欧美在线干| 草草草视频在线免费看| 日韩亚洲Av人人夜夜澡人人爽| 国产一区二区三区中文字幕| 人妻黑丝袜电影| 亚洲无线观看久久| 伊人色综合网电影| 成人综合视频久久| 亚洲Av诱惑| 日本一级婬片试看三分钟| 久草色在线观看| 国产成人亚洲精品无| 欧美午夜视频精品久久| 日韩中文字幕熟妇人妻| 久热这里只有精品9| 爽极品影院| 久操99| 一本色道熟妇| 中文字幕日韩人妻视频一区二区三区 | 欧美在线视频99| 很很很很操| 免费视频在线一区二区不卡| 99热| 999久久芭蕾| 亚洲囯产精品女人久久久| 九九九网页| 999久久久九九九九| 欧美特大黄一级片片免费| 99在线视频播放| 日韩强奸av| 人妻激情另类| 欧美综合色图片| 操逼视频免费日韩无码| 亚洲日产专区婷婷| 亚欧毛片基地国产毛片基地| 又大又黄国产| 久久久久久久唑| 日本99视频| 91M一社| 日本色婷婷| 伊人国产AV| 激情看片网站| 婷婷五月天色网| 国产真实野战在线视频| 欧美玖玖爱免费玖玖| 亚洲图片日本AⅤ欧美在线| 影音综合网| 亚洲欧美日韩制服另类| 日本少妇va7777| 视频国产成人精品日本亚洲18| 亚洲 欧美都市激情| 欧美色图亚洲色| oumeisetu综合| 色欧洲| 久久大香蕉手机高清| 国产一级高清免费观看| 小草精彩毛片| 一级做a爰片性色毛片久久| 伊人色综合超碰| 高清在线不卡一区二区 视频| 青青草视频爽一爽| 国产福利视频精品视频| 啊啊啊好舒服好爽啊啊啊视频| 99亚洲精品| 黑人与人妻| 强奸乱伦大香蕉网| 97在线视频免费看| 性色avv| 国内精品久久人妻性色av| 欧美 牲| 日韩性爱网址| 美女诱惑久久| 亚洲综合有玛| 国产 无码 一区二区| 强乱老妇中文字幕| 久久人人妻| 亚洲人妻在线一区| 超碰在线在公开超碰在线在公开| 亚洲五月丁香花狠狠干一区二区三区| 亚洲图片欧美| 丰满搜索结果 -第18页- 久久高清无码| 人妻啪| 大香蕉性欧美| 一区二区三区男女操逼黄色小电影| 久热影视| 日天天九九天堂666| 偷窥自拍亚洲色图| 国产欧美精选自拍一区| 黑人精品欧美一区二区蜜桃| 亚洲 图片 综合91| 17c在线成人免费A片观看| 97综合久第一页| 77777亚洲蜜臀精品久久综合蜜臀| 国产精品探花色| 精品十八在线观看| 亚洲综合码| 国产精品三级视频网站| 国产精品爆乳懂色蜜乳| 91国精产品| 97玖玖人妻| 日本性爱少妇| 亚洲**2021在线观看| 蜜桃视频啊啊啊啊| 蜜臀亚洲中文| 99热婷婷| 亚州免费啪啪视频| 国产精品美女| 97中文字幕一区| 高潮嗯啊性感美女久久久| 偷窥自拍亚洲天堂网爆| 欧美亚洲素人制服精品| 啊v在线观看视频| 啊啊啊啊好大好硬啊啊啊啊啊 | 亚洲婷婷综合网| 欧美亚洲清纯| 美女啪欧美一区| 狠狠久久亚洲欧美专区| 牛牛久久国产精品视频一二三 | 992大香蕉| 九九九精品色乱九九九| 哈哈操电影AV| 男人的天堂亚洲| 中文字幕av亚洲在线| 亚洲精品乱码线路中文字幕 | 欧美中文字幕一区| 91oumei| 一区二区三区机械有限公司| 国产探花精品在线| 无码一区二区精品视频久久久春药| 亚洲Av诱惑| 女人18精品一区二区三区| 日韩噜噜69| 国产精品91ai| 一区=区三区视频| 中文字暮97| 色五月婷婷麻豆在| 日韩成人电影AV| 免费看欧美美女黄色大片| 男人天堂黄片| 国产黄色小视频网站| 综合亚洲欧美精品日韩?v| 97色碰| 中日韓欧美高清| 99热伊人| 狠狠爱大香蕉| 日韩综合色图| 91bbb| 亚洲欧美色图片| 91东北熟女| 91无遮挡| 成人一二| 欧美亚洲国产91在线| 久久性爱视频免费看| 中文操逼字幕| 乱伦一二三| 大香蕉免费3| 黄色激情电影在线观看| 密乳无码| 久久精品色欧美aⅴ一区二区| 日人妻视频91| av资源在线播放天堂| www.超碰在线| 欧美亚洲综合色| 四虎 精品 WWW| 秋霞男人网| 色超碰综合| 亚洲欧美91√| 精品人妻一区二区三区不卡断| 高清孕妇孕交 交| 少妇被c 黄 免费观看| 黄色香蕉视频网站一区| 黄色电影在线播放综合网站| 欧美人妻久久精品二区三区| 91狼人| 国产女人高潮视频| 狠狠夜色午夜久久综合在线| 激情小说亚洲视频| 欧美熟妇精品黑人巨大91| 91亚洲欧美| 一级黄色视频网| 日本网色| 国产乱婷婷精品二区三区| 性老妇一区二区三区| 啊啊啊啊在线播放| 骚女天天综合网| 翔田千里AⅤHD无码| 日本高清一区二区在线| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 精品97久久| AV乱伦专区| 久久肏大逼| 无码99| 98福利在线视频| 亚洲欧美日韩激情不卡| 国产精品区在线12p| 精品性爱无码在线播放| 欧美日韩资源在线| 97在线观看免费| 美女天天干| 亚洲国产一区二区三区四区国产| www.欧精品| 久久风骚城市| AA级电影三区| 91蜜桃婷婷狠狠久久综合9色| 99热在线不卡| 麻豆亚洲AV成人无码久久精品| 香蕉黄色一级视频| 色婷婷99| 亚洲资源网| 亚洲精品国语在线播放| 日本 欧美 国产一区| 一区二区三区蜜桃成人撸久久东京热| 黄页网站成人免费| 日韩在线一区高清在线| 久久久九97| 日本熟妇自慰性高潮一区二区三区| 亚洲麻豆av一区二区| 午夜精品视频777| 好舒服视频| 亚洲欧美高清无码| www.夜夜操| 超碰在线在公开超碰在线在公开| 日韩免费簧片| 日本欧美韩国日产片片在线看免| 欧亚揄拍偷拍精品视频| a片自拍直播视频| 丁香五月色情| 视频黄站| 亚洲成人性| 亚洲永久永久永久永久一级一级一级精品| 怡红院成人视频| 在线v中文字幕一区二区三区 | 欧美色性爱| 久久色一区二区| 日韩av在线精品观看| 青青国产精品在线| 综合五月天| 综合久| 蜜桃天美传媒AV一区二区三区| 亚一综合久久久久久久久久| 熟女色图在线| 探花视频免费观看国产专区| 美女黄色一级A视频| 久9综合在线| 国产亚洲精品第一最新| 欧美亚洲宗合色性图| 人妻中文字幕精品无码| 色偷偷色偷偷欧美日韩| 亚洲天天做日日做天天谢日日| 熟妇人妻一区二区| 欧美乱伦专区| 欧美熟妇精品黑人巨大一二三区| 亚洲色图图片| 欧美精品在线观看| www国产无码| 人妻在线臀日韩| 欧美极品美女aaaaaa级黄片| 欧美天天谢综合网| 91av一区二区在线观看| 天堂精品小草| 成人性爱视频在线看| 男人精品天堂一区| 久干9操| 另类老少妇| 五月天大香蕉| 亚洲自拍97| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 青青操日韩| 人妻嗯啊啊在线播放| 亚洲色交| 婷婷五月天久久精品视频一区二区三区 | 98人妻精品一区二区色欲| 欧美日韩电影一区二区| 黄色人人| 精品女同一区| 亚洲综合五月天婷婷丁香| 亚洲欧美另类激情小说| 久久AV无码1区2区3区| av天堂天堂av日韩| 蜜臀在线网站| 91蜜臀熟女| 亚洲无码太久| 高清孕妇孕交 交孕妇| 久/久精品99看9| 日本中文字幕不卡视频| 亚洲污污网站| 丰满的三级少妇欧美久久久| 91亚洲欧洲| 操逼精品视频| 九九aV| 人人操人人色人人摸| 激情四射婷婷六月天| 农村妇女一级二级三级视频| 黄色香蕉视频网站一区| AV在线播放网址| 久久久久精| 中国女人内射6XXXXX| 91久| 欧美人妻中出| 日韩人妻资源在线看| 高清无码一区二区三区| 91精品导航| 另类 综合 日韩 欧美 亚洲| 亚洲综合成人网| 思思视频免费看网站| 欧美97免费| 国精综合一二三区影视| 丁香五月性| 国产一区在线观看无码AV| 国产一线二线三线av| 日日黄色三级网站| 男人天堂一区二区| 两性色网| 亚洲欧美另类激情小说| 欧美一区二区三熟女剧情| 亚洲乱色视频一区、二区在线| 久久‘黄片视频| 乱伦熟女专区| 不卡二三区人妻少妇| 91色色综合| 天天干天天日天天射黄色大片 | 蜜臀网址在线| 日韩欧美偷拍美女视频| 天天日B狠狠操| 操逼操操操91| 黄片免费看的| 成人午夜高潮av猛片| 九九热精品视频六| 国产精品久久久久999| 欧美亚综合色图| 久久久爆乳翘臀一线天伦理视频| 福利伊人玖玖国产| 成人AV超碰免费在线| 啊啊啊好多水| 94色色电影网| 欧美日综合| 综合色久欲| 亚洲国产丝袜在线观看| 5252色欧美在线| 天天干天天日天天射黄色| julia高潮后不停追击中出| 全球成人中文在线| 91快色色色色色| 日韩av不卡在线看| 免费av在线播放二区| 欧美一区二区三区不卡高清视频| 97资源亚洲| 78m啪啪啪| 天美传媒麻豆一区二区三区国产精| 人妻超碰青青草98| 亚洲色情在线影视| 熟女网站最新| jiujiujiujingpin| 综合av影片| 日影院久久婷婷夜夜网| 亚州日韩97| 天天操人人操骚逼网站| 强奸熟女一区二区三区| 午夜毛片高清免费不卡| 久草在| 中文字幕视频免费| 大屁股熟女一区二区三区| 十八禁一区二区无码观看| 成人久久久精品| 超碰 国产熟女精品一区| 国产麻豆一区二三区| 91色s| av天堂加勒比| 男女啊啊啊啊啊| 久久久无码视频| 亚洲影院无码在线| 国模私拍一区二区三区神乳| 狠狠操官网| 曰本熟女视频| 人人弄人人摸| 大香蕉免费3| 日韩国产欧美伦理在线| 约操熟妇| 久操精品网|