跳到主要內容

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

留言

這個網誌中的熱門文章

JavaBean 和POJO

前言 今天介紹JavaBean和POJO的不同,這兩個名詞在JAVA文章常常被拿來使用以及討論。在JDK1.1時候釋出才有的一個標準架構,很多時候常常被搞混,所以我們特別開闢一章來加以討論。POJO規範在企業級應用已經廣大的被使用的規範。 解釋 POJO : 全名為Plain-old-Java-object,只需要繼承Object就可以,沒有特定規定,只要建立的類別有setter/getter方法都可以稱為POJO JavaBean: JavaBean通常用來封裝多個物件成為單獨物件使用,規範比較嚴格,規則如下 規則 說明 1 需要實作序列(Serializable/Externalizable) 2 不能有參數的建構子( no-arg constructor) 3 需要有公用setter/getter 4 屬性必須要私人(private) 5 屬於特定POJO規則 比較 所有的JavaBean都為POJO,但是所有的POJO不一定為JavaBean 都可以當作重複元件 都必須序列化 特性都為可用性、易用性和持久化使用 - 應用 由圖我們可以知道POJO在應用程式中,主要用來存取資料庫資料達到持久化的目的,並提供給商業邏輯流程處理使用。這種POJO的架構提供程式人員開發時的可以很有規則將資料封裝並加以使用。 範例1. JavaBean(以員工為實例) JavaBean建立員工物件,可以發現Employee物件建構子沒有任何參數,屬性為私有化並setter/getter的命名方式。 //實作序列化 public class Employee implements java.io.Serializable{ private int id; private String name; //無參數建構子 public Employee(){} //以下實作setter/getter public void setId(int id){this.id=id;} public int getId(){return id;} public void setName(String ...

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...

H2資料庫(1)-基本安裝與介紹

H2資料庫介紹 H2為嵌入式資料庫,使用java開發,跨平台且內含資料庫管理介面,好處開發階段方便開發人員使用。 比較 詳細比較表: http://www.h2database.com/html/features.html#comparison 由圖比較可以知道,H2比其他資料庫更為優勢,以下會介紹開發時常用的模式: 嵌入式模式Embedded Mode 嵌入式資料庫會與應用程式共用同一JVM底層,在這個模式下persistent或是in-memory資料庫都支援,也沒有連線數的限制。但壞處是只可以給該應用程式使用,其他人無法直接存取資料庫。 伺服器模式 Server Mode 外部應用程式可以藉由JDBC或是OBC的方式連結該資料庫,它也支援persistent或是in-memory資料庫,也沒有連線數的限制。 混合模式 Mixed Mode 同時有嵌入式與伺服器的模式去讓外部應用程式連線或是自己應用程式連線。 安裝H2 database 官方網站: http://www.h2database.com/html/main.html 下載安裝程式 出現安裝連結,本次範例使用 Windows installer 的安裝連結 下載安裝程式後,點擊兩下,進入安裝畫面,按”下一步” 一直按”下一步”後,會出現”完成” 安裝完成後,會出現一個說明網頁,你可以點選Quickstart 它會告訴你,如何進入DBRMS畫面以及開啟資料庫服務 開啟windows的視窗圖示,執行 H2 Console後,會執行H2資料庫 進入DBRMS的登入畫面,使用者預設為”SA”,密碼為空值”“,按下”connect”進入,SQL命令中心 登入後,可以在空白處執行SQL語法 8.大致上安裝H2資料庫滿快速,操作畫面也是很好上手,如果系統在開發階段個人覺的滿推薦給大家使用看看。 參考 H2官方網站