跳到主要內容

Vector Search and Embeddings 向量搜尋與生成嵌入

參加Google Cloud AI Study Jam 2024 - 生成式 AI 培訓計劃

參加Google Cloud AI Study Jam 2024 - 生成式 AI 培訓計劃

網站:https://rsvp.withgoogle.com/events/csj-tw-2024

指定學習教材

Path 3: Advanced: Generative AI for Developers Learning Path (12 堂課程)

Vector Search and Embeddings


Search 搜尋

每天都會有搜尋的需求,例如要找某個產品的資料、想要旅遊行程。在企業上想要用影像搜尋、自然語言搜尋、推薦工具來管理內部資訊等等。在企業內部搜尋相關文件、找出必要的主題內容專家(SME)或跨團隊探索使用範例。向量搜尋是著重於語意相似度(Semantic similarity)的技術,可以用於上面情境。

Vector Search and Embeddings

(1) 向量搜尋如何工作

  1. Encode:將輸入資料(文字、圖片、聲音、影像、編碼等等)使用embeding模型來將資料轉成向量格式,
  2. Index:然後建立索引,以向量的方式可以更快速與更廣的方式搜尋
  3. Search:在向量空間上搜尋類似的資訊 How does Vector Search work?

(2)向量搜尋運作的方式

  1. Build: 會將Meta資料透過embeding模型產生向量並建立索引後,儲存在向量資料庫(Vector Space)中
  2. Query: 先把搜尋的句子透過embeding模型產生向量來跟向量資料庫(Vector Space)進行搜尋

How does Vector Search work?

(3)向量資料庫的挑戰

問題 技術
編碼 如何建立多模態的資料(文字、圖片、聲音、影像、編碼)來語意表示 Embeddings
建立索引與搜尋 建立快速且有效的搜尋 Vector Search

alt text

傳統與向量搜尋的比較

傳統搜尋

選項 說明
搜尋方式 關鍵字搜尋
技術 先爬蟲網路上的資料,再建立索引與排名提供搜尋結果
儲存 資料儲存在資料表
搜尋範圍 只能在一定的範圍有效
瓶頸 1.無法知道查詢的意圖與情境
2.需要使用者自行整理歸納資料或報告
3. 無法多模態(圖形、語音、文字)搜尋

向量搜尋

選項 說明
搜尋方式 語意搜尋
技術 將關鍵字使用encode進行編碼,在建立索引提供搜尋結果
儲存 資料轉成向量表示方式
搜尋範圍 了解語意
解決痛點 1.查詢出跟語意類似的結果
2.根據使用者個人化建議與整理歸納報告
3.多模態(圖形、語音、文字)搜尋

Transformer Model

參考資料

https://www.cloudskillsboost.google/paths/183/course_templates/939/video/497240?locale=zh_TW

留言

這個網誌中的熱門文章

GSON基礎教學

GSON 前言 JSON是很常見的資料交換格式,在JAVA領域常用處理JSON的函式庫:GSON、FastXML和JSON-B,本章節會以GSON為主,學習目標如下 JSON格式說明 GSON 套件函式 GSON: 物件轉換JSON字串 GSON: JSON字串轉換物件 JSON 格式說明 JSON全名為JavaScript Object Notation,它是一種輕量級的資料交換格式,會大為流行的理由,主要是他比傳統用xml更輕巧且容易處理, JSON表達方式物件會用大括弧{},陣列則是用中括號[]。 用JSON字串來表達Employee的物件內容,由JSON字串可以知道物件name、age、sex和salary屬性。 JSON表示員工資料方式: {“name”:”Jack Bryant”, “age”:18, “sex”:”M”,”salary”:3500.00} JSON陣列表示方式: 跟我們使用JAVA的陣列方式類似,內容值可以是數字’、文字、布林、陣列、物件、null等等。 範例: 字串: [“紅”、”橙”、”黃”、”綠”、”青”、”藍”、”紫”} 布林: [true, true, false, false, true, true] GSON 套件函式 Gson為google所發布的函式庫,主要將物件與json字串之間的轉換時方便使用。當我們將JAVA物件轉換成JSON字串稱為 序列化 ,JSON字串轉換至JAVA物件稱為 反序列化 。 GSON: 物件轉換JSON字串 有了JSON基本概念後,我們進入本章重點,首先我們需要建立員工類別(Employee),定義如下 物件 屬性 員工類別 Employee name 名字 age 年紀 sex 性別 salary 薪水 /** * name:員工類別 */ public class Employee implements Serializable { //constructor public Employee(String name, double salary){ this.name = name; this.sala

PHP與Python搭配

今天介紹如何利用php網頁呼叫目錄下的python程式工作或是資料交換,本人整理的方法有兩種 使用system()、exec()、shell_exec()呼叫程式 (1) string system ( string return_var ] ) 參考網址 官網解釋system()用來執行外部命令,返回為印出的結果,passthru()跟system()類似但是它不會返回結果。 範例1. 利用system執行ls指定並顯示在網頁上,無法使用變數保留ls的結果 檔案名稱: psystem.php $jsondata= system("ls -al", $result); 結果: (2) exec() : string exec ( string output [, int &$return_var ]] ) 參考網址 範例2. 利用exec執行python程式並可以回傳json格式給前端網頁做處理並顯示。我們ptopy.php就是可以看到callpy()為執行py的函式,它執行完pyEx01.py會將結果給$jsondata變數,做後面json解析。 檔案名稱: ptopy.php function callpy() { $jsondata= exec("/usr/bin/python pyEx01.py"); return $jsondata ; } $jsondata= callpy(); echo $jsondata ; echo " " ; $obj = json_decode($jsondata) ; echo "name:".$obj-> { 'name'} .',' ; echo "id:".$obj-> { 'id'} ; 檔案名稱: pyEx01.py import sys

Python AI-問題集

Python AI-問題集 問題集 Jupyter Notebook執行ipywidgets會出現kernel死掉的錯誤發生(The kernel appears to have died) 解決方法 (1) 根據log檔來判斷問題: 例如:log訊息出現OMP: Error #15: Initializing libiomp5.dylib, but found libiomp5.dylib already initialized. (2) 根據問題關鍵字找出問題所在: 利用google查詢所遭遇到的問題,例如我把上面的問題上google查詢可以找到這篇的解法 https://blog.csdn.net/bingjianIT/article/details/86182096 (3)實作解法: 我實作下面解法後,就可以順利執行手寫辨識的程式. //在Python宣告時加入 import os os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE" 參考 https://blog.csdn.net/bingjianIT/article/details/86182096