向量數據庫如何助力Text2SQL處理高基數類別數據

627431f6eb6256e6e5e328815341442f.png

f5f7998b6c868f2e06b2a57d62217099.png

01.

導語

Agent工作流和 LLMs (大語言模型)的出現,讓我們能夠以自然語言交互的模式執行復雜的SQL查詢,并徹底改變Text2SQL系統的運行方式。其典型代表是如何處理High-Cardinality Categorical Data (高基數類別數據)。

圍繞這一問題,本文將以Waii和Zilliz Cloud(完全托管的Milvus向量數據庫)組合為例,展示如何將向量數據庫與 Agentic Text2SQL系統集成。

02.

為什么Text2SQL不適合查詢高基數類別數據

Categorical data (類別數據)在數據庫中無處不在,比如各種產品類別、客戶細分或交易類型。其典型代表如,人的性別分為男和女,中國一共有34個省級行政區。

不難發現,以上類別數據,其去重后唯一值的數量(cardinality)是可控的。相應的,這些低基數列對于Text2SQL系統來說相對容易處理,因為自然語言查詢和數據庫值之間的差距很小。

但當我們遇到高基數類別數據(某一類別特征的取值數量巨大)時,問題就出現了。比如,超過60%的數據庫大多長這樣:包含數百萬個唯一ID的產品目錄,或包含數十萬企業ID的金融數據庫,甚至數據量超過上億的身份識別庫與電商IP地址庫。

數據庫需要對這些類別進行精確、嚴格的查找,但基于自然語言描述的查詢通常是模糊和不精確的。比如,用戶可能會問“最近什么劇比較火”或“最近哪個股票漲的比較好”。如何將這些模糊的描述轉化為精準的數據庫查詢,Text2SQL根本無法做到。

03.

如何補足Text2SQL的短板

通常,Text2SQL 系統在做高基數類別數據的自然語言查詢時會采用以下兩種方法:

  • 數據預處理技術(Preprocessed Database Techniques):這種方法結合輸入預處理并依賴于傳統的數據庫功能,如文本搜索和正則表達式。雖然它可以處理簡單的匹配,但通常由于過于僵化而無法準確表示用戶的想法,尤其是在復雜或精細化的查詢中,我們的自然語言通常是非常多變的。

  • 基于LLM的翻譯(LLM-Based Translation):在這種方法中,使用基于數據或少量示例訓練的LLM來預測正確的類別值。雖然LLM在理解上下文和自然語言方面表現出色,但在處理高基數數據時經常產生錯誤的結果。這是因為LLM缺乏對完整(通常是私有的)數據集的了解,因此很難對那些不在訓練數據中的如企業ID等信息進行查詢。

對于高基數數據的處理,以上兩種方法都有短板。

數據預處理技術過于僵化和字面化,無法有效處理自然語言查詢的細微差別;而LLM雖然可以理解查詢意圖,但無法精準理解不在預訓練數據中出現的特殊值。

04.

向量數據庫如何解決高基數類別數據查詢困境

向量數據庫旨在存儲和高效查詢數據的高維向量表達。不難發現,向量數據庫的查詢并非基于關鍵詞匹配,而是主要是使用embedding進行語義搜索。因此,查詢高基數類別數據,正是向量數據庫的擅長之處。

接下來,我們會展示如何利用向量數據庫來做基于自然語言的高基數類別數據查詢。

工作原理:

  • 創建embedding(Create Vector Embeddings):為高基數列中的每個唯一值創建embedding。該embedding通過將值映射到高維空間中的向量來捕獲其語義含義。

  • 在向量數據庫中索引(Index in a VectorDB):將這些embedding存儲在像Milvus這樣的向量數據庫中,該數據庫針對高維空間中的快速相似性搜索進行了優化。

  • 查詢處理(Query Processing):當用戶提交自然語言查詢時,使用LLM理解意圖并生成初步SQL查詢。對于高基數列,LLM不是嘗試生成特定值,而是生成所需值的描述或特征。

  • 向量搜索(Vector Search):使用此描述的embedding對向量數據庫進行相似性搜索,檢索相關的類別值。

  • 優化(Refinement):LLM可以根據用戶查詢的完整上下文過濾掉任何不相關的匹配項。

  • SQL生成(SQL Generation):通過使用優化的類別值列表構建相應的filter查詢以及匯總來生成最終的SQL查詢。

05.

在Text2SQL中使用向量搜索的好處

向量數據庫增強的方法提供了幾個優勢:

  • 可擴展性(Scalability):它可以處理具有數百萬個唯一值的類別,而不會顯著降低性能。

  • 準確性(Accuracy):通過結合LLM的語義理解和向量數據庫的精確召回,可以更準確地將用戶意圖翻譯為特定的數據庫值。

  • 靈活性(Flexibility):這種方法可以適應數據庫的更新,而無需重新訓練整個系統。

06.

選型與部署

落地中,我們可以考慮通過結合Waii和Zilliz Cloud,來進行實際部署。

6.1 Waii用于智能Text2SQL

Waii是世界上第一個基于 Agent 工作流構建的Text2SQL API。它結合了編譯器技術和自動生成的知識圖譜,以實現最準確的查詢生成。

  • 自動檢測(Automatic Detection):Waii自動識別這些高基數列,無需手動配置。

  • 智能生成(Smart Embedding Generation):它采用定制的工作流為不同類型的列構建和更新embedding,優化準確性和資源效率。

  • 自適應技術(Adaptive Techniques):Waii自動選擇適合各種列類型的技術,確保最佳性能,而無需用戶具備深厚的專業知識。

6.2 Zilliz Cloud用于向量語義搜索

Zilliz Cloud是支持高性能的向量數據庫,它的擴展能力和低延遲精準召回的能力使其成為AI 應用開發中的最佳選擇,與Waii相輔相成。

  • 可擴展性(Scalability):Zilliz Cloud可以輕松處理數十億級的向量規模,使其成為高基數數據場景的理想選擇。

  • 高性能查詢(Lightning-Fast Queries):其優化的索引可以確保快速相似性搜索,保持低延遲。

  • 安全性和訪問控制(Security and Access Control):Zilliz Cloud通過安全網絡選項和加密協議提供企業級數據安全和隱私合規性。這確保了數據在傳輸和靜態時的安全性。此外,Zilliz Cloud提供權限分明的身份控制和訪問管理,包括基于角色的訪問控制(RBAC)和OAuth 2.0,以實現安全的集中式單點登錄(SSO)功能。

6.3 Waii和Zilliz Cloud的集成

  • 自動工作流(Seamless Workflow):Waii的自動預處理和Zilliz的強大向量存儲相結合,可以創建一個在處理Text2SQL系統中高基數數據的流暢、端到端解決方案。

  • 生產級可用(Production-Ready):專為現實世界的大規模挑戰設計,適用于各個場景的生產部署。

通過利用Waii的自動檢測和Zilli的高效向量查詢,可以建立在Text2SQL系統中處理高基數類別數據的強大解決方案,而無需手動開發代碼進行元數據管理或embedding生成。

07.

實例

接下來,我們將展示如何部署一個監控全球數百萬個新聞事件的查詢平臺。

數據庫架構如下:

CREATE?TABLE?events?(event_id?INT?PRIMARY?KEY,event_name?VARCHAR(255),event_date?DATE,category?VARCHAR(100),total_spent?DECIMAL(10,?2)
);

event_name 是一個高基數類別列,包含數百萬個唯一的描述性名稱,如“Global AI Ethics Summit 2024”、“Sustainable Living Expo: Greening Our Future”或“5th Annual Quantum Computing Breakthrough Conference”。

分析師可能會問:“How much money was spent on AI events last month?”

以下是處理這個問題的不同方法:

方法一:傳統的關鍵詞匹配

在這種方法中,我們直接把用戶提供的術語作為查詢的搜索詞。我們在這里使用不區分大小寫的全文搜索。

SELECT?SUM(total_spent)?
FROM?events?
WHERE?event_name?ILIKE?'%AI%'??AND?event_date?>=DATE_TRUNC('month',?CURRENT_DATE?-?INTERVAL?'1?month')AND?event_date?<DATE_TRUNC('month',?CURRENT_DATE);

問題:這種方法錯過了像“Machine Learning Symposium”或“Neural Network Workshop”這樣與AI相關但不包含“AI”單詞的事件,而且也可能錯誤地將“HAIR styling convention”這樣含有“AI”字母的結果。

方法二:單獨采用LLM

在這種方法中,LLM生成可能與搜索相關的多個術語,并據此構建filter查詢。它通常會生成如下內容:

SELECT?SUM(total_spent)?
FROM?events?
WHERE?(event_name?ILIKE?'%AI%'???????OR?event_name?ILIKE?'%Artificial?Intelligence%'???????OR?event_name?ILIKE?'%Machine?Learning%'???????OR?event_name?ILIKE?'%Neural?Network%')AND?event_date?>=?
DATE_TRUNC('month',?CURRENT_DATE?-?INTERVAL?'1?month')AND?event_date?<?
DATE_TRUNC('month',?CURRENT_DATE);

問題:雖然這種方法召回了更多與AI相關的事件,但它仍然局限于預定義的術語列表,可能會錯過其他更新穎的AI相關的事件,依然無法實現精準召回。

08.

向量數據庫+LLM方法

下圖描述了整體流程。左側是對事件表(events table)進行的預處理,右側顯示了生成查詢的流程。

131033f64a92c588afe89681309f8bb2.png

查詢生成流程:

  • Waii解釋查詢并重寫描述:“與人工智能、機器學習、神經網絡和其他AI技術相關的事件。”

  • 此描述用于查詢Zilliz Cloud,返回基于語義相似性的相關事件ID列表。

  • Waii優化此列表,過濾掉可能被錯誤召回的非AI事件。

  • Waii使用Agent工作流將這些事件ID納入最終的SQL查詢:

SELECT?SUM(total_spent)?
FROM?events?
WHERE?event_id?IN?(1234,?5678,?9101,?1121,?3141,?5161,?7181,?9202,?1222,?3242)?
AND?event_date?>=?
DATE_TRUNC('month',?CURRENT_DATE?-?INTERVAL?'1?month')?
AND?event_date?<?
DATE_TRUNC('month',?CURRENT_DATE);

這種方法可以準確識別與AI相關的事件,即使它們使用的是專業術語或并不包含明顯的AI關鍵詞,比如找到像“3rd Symposium on Generative Adversarial Networks”或“Workshop on Ethical Considerations in Reinforcement Learning”,而其他方法可能會錯過。

通過利用向量相似性搜索,我們可以更準確地解釋用戶的意圖,并將其與我們數據庫中的高基數事件名稱匹配,提供更全面和準確的結果。

09.

結論

隨著數據量的持續增長和用戶對直觀數據交互的期望增加,在Text2SQL系統中處理高基數類別數據將變得更加普遍。通過利用Zilliz Cloud與Waii的結合,可以創建更強大、可擴展和準確的系統。

本文作者:

陳將(Zilliz 生態和 AI 平臺負責人)

Gunther Hagleitner(CEO and co-founder of Waii)

推薦閱讀

6d4eee7b8a45d2f2b5d24f39a6d78143.png

8d6bb58372b346b0d30a2aac07e48be4.png

0234cfff8fb0721f3728b375c245c307.png

a7dda4d85f0ffbee516d09907f1fb9a5.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/66104.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/66104.shtml
英文地址,請注明出處:http://en.pswp.cn/web/66104.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

qBittorent訪問webui時提示unauthorized解決方法

現象描述 QNAP使用Container Station運行容器&#xff0c;使用Docker封裝qBittorrent時&#xff0c;訪問IP:PORT的方式后無法訪問到webui&#xff0c;而是提示unauthorized&#xff0c;如圖&#xff1a; 原因分析 此時通常是由于設備IP與qBittorrent的ip地址不在同一個網段導致…

工程水印相機結合圖紙,真實現場時間地點,如何使用水印相機,超簡單方法只教一次!

在工程管理領域&#xff0c;精準記錄現場信息至關重要。水印相機拍照功能&#xff0c;為工程人員提供了強大的現場信息記錄工具&#xff0c;助力工程管理和統計工程量&#xff0c;更可以將圖片分享到電腦、分享給同事&#xff0c;協同工作。 一、打開圖紙 打開手機版CAD快速看圖…

GO語言實現KMP算法

前言 本文結合朱戰立教授編著的《數據結構—使用c語言&#xff08;第五版&#xff09;》&#xff08;以下簡稱為《數據結構&#xff08;第五版&#xff09;朱站立》&#xff09;中4.4.2章節內容編寫&#xff0c;KMP的相關概念可參考此書4.4.2章節內容。原文中代碼是C語言&…

LeetCode 熱題 100_從前序與中序遍歷序列構造二叉樹(47_105_中等_C++)(二叉樹;遞歸)

LeetCode 熱題 100_從前序與中序遍歷序列構造二叉樹&#xff08;47_105&#xff09; 題目描述&#xff1a;輸入輸出樣例&#xff1a;題解&#xff1a;解題思路&#xff1a;思路一&#xff08;遞歸&#xff09;&#xff1a; 代碼實現代碼實現&#xff08;思路一&#xff08;遞歸…

1.2 ThreeJS能力演示——模型導入導出編輯

1、模型導入導出編輯能力 1&#xff09;支持導入基本類型模型 最常用&#xff0c;最適合作為web演示模型的是glb格式的&#xff0c;當前演示glb模型導入 // 1) 支持導入基本類型模型const loader new GLTFLoader();loader.load(./three.js-master/examples/models/gltf/Hors…

文檔智能:OCR+Rocketqa+layoutxlm <Rocketqa>

此次梳理Rocketqa&#xff0c;個人認為該篇文件講述的是段落搜索的改進點&#xff0c;關于其框架&#xff1a;粗檢索 重排序----&#xff08;dual-encoder architecture&#xff09;&#xff0c;講訴不多&#xff0c;那是另外的文章&#xff1b; 之前根據文檔智能功能&#x…

ESP8266 AP模式 網頁配網 arduino ide

ESP8266的AP配網,可以自行配置網絡,一個簡單的demo,文檔最后有所有的代碼,已經測試通過. 查看SPIFFS文件管理系統中的文件 賬號密碼是否存在,如不存在進入AP配網,如存在進入wifi連接模式 // 檢查Wi-Fi憑據if (isWiFiConfigured()) {Serial.println("找到Wi-Fi憑據&#…

ubuntu官方軟件包網站 字體設置

在https://ubuntu.pkgs.org/22.04/ubuntu-universe-amd64/xl2tpd_1.3.16-1_amd64.deb.html搜索找到需要的軟件后&#xff0c;點擊&#xff0c;下滑&#xff0c; 即可在Links和Download找到相關鏈接&#xff0c;下載即可&#xff0c; 但是找不到ros的安裝包&#xff0c; 字體設…

使用 WPF 和 C# 繪制覆蓋網格的 3D 表面

此示例展示了如何使用 C# 代碼和 XAML 繪制覆蓋有網格的 3D 表面。示例使用 WPF 和 C# 將紋理應用于三角形展示了如何將紋理應用于三角形。此示例只是使用該技術將包含大網格的位圖應用于表面。 在類級別&#xff0c;程序使用以下代碼來定義將點的 X 和 Z 坐標映射到 0.0 - 1.…

[Do374]Ansible一鍵搭建sftp實現用戶批量增刪

[Do374]Ansible一鍵搭建sftp實現用戶批量增刪 1. 前言2. 思路3. sftp搭建及用戶批量新增3.1 配置文件內容3.2 執行測試3.3 登錄測試3.4 確認sftp服務器配置文件 4. 測試刪除用戶 1. 前言 最近準備搞一下RHCA LV V,外加2.9之后的ansible有較大變化于是練習下Do374的課程內容. 工…

SK海力士(SK Hynix)是全球領先的半導體制造商之一,其在無錫的工廠主要生產DRAM和NAND閃存等存儲器產品。

SK海力士&#xff08;SK Hynix&#xff09;是全球領先的半導體制造商之一&#xff0c;其在無錫的工廠主要生產DRAM和NAND閃存等存儲器產品。以下是SK海力士的一些主要產品型號和類別&#xff1a; DRAM 產品 DDR4 DRAM 特點: 高速、低功耗&#xff0c;廣泛應用于PC、服務器和移…

WordPress如何配置AJAX以支持點擊加載更多?

WordPress 配置 AJAX 支持點擊加載更多內容通常涉及到前端 JavaScript 和服務器端的配合。以下是基本步驟&#xff1a; 安裝插件&#xff1a;你可以選擇一個現成的插件如 “Advanced Custom Fields” 或者 “WP Infinite Scroll”&#xff0c;它們已經內置了 AJAX 功能&#xf…

【IDEA 2024】學習筆記--文件選項卡

在我們項目的開發過程中&#xff0c;由于項目涉及的類過多&#xff0c;以至于我們會打開很多的窗口。使用IDEA默認的配置&#xff0c;個人覺得十分不便。 目錄 一、設置多個文件選項卡按照文件字母順序排列 二、設置多個文件選項卡分行顯示 一、設置多個文件選項卡按照文件字…

【C】數組和指針的關系

在 C 語言 和 C 中&#xff0c;數組和指針 有非常密切的關系。它們在某些情況下表現類似&#xff0c;但也有重要的區別。理解數組和指針的關系對于掌握低級內存操作和優化程序性能至關重要。 1. 數組和指針的基本關系 數組是一個 連續存儲的元素集合&#xff0c;在內存中占據一…

Maven 配置本地倉庫

步驟 1&#xff1a;修改 Maven 的 settings.xml 文件 找到你的 Maven 配置文件 settings.xml。 Windows: C:\Users\<你的用戶名>\.m2\settings.xmlLinux/macOS: ~/.m2/settings.xml 打開 settings.xml 文件&#xff0c;找到 <localRepository> 標簽。如果沒有該標…

Docker save load 鏡像 tag 為 <none>

一、場景分析 我從 docker hub 上拉了這么一個鏡像。 docker pull tomcat:8.5-jre8-alpine 我用 docker save 命令想把它導出成 tar 文件以便拷貝到內網機器上使用。 docker save -o tomcat-8.5-jre8-alpine.tar.gz 鏡像ID 當我把這個鏡像傳到別的機器&#xff0c;并用 dock…

O2O同城系統架構與功能分析

2015工作至今&#xff0c;10年資深全棧工程師&#xff0c;CTO&#xff0c;擅長帶團隊、攻克各種技術難題、研發各類軟件產品&#xff0c;我的代碼態度&#xff1a;代碼虐我千百遍&#xff0c;我待代碼如初戀&#xff0c;我的工作態度&#xff1a;極致&#xff0c;責任&#xff…

《盤古大模型——鴻蒙NEXT的智慧引擎》

在當今科技飛速發展的時代&#xff0c;華為HarmonyOS NEXT的發布無疑是操作系統領域的一顆重磅炸彈&#xff0c;其將人工智能與操作系統深度融合&#xff0c;開啟了智能新時代。而盤古大模型在其中發揮著至關重要的核心作用。 賦予小藝智能助手超強能力 在鴻蒙NEXT中&#xf…

走出實驗室的人形機器人,將復刻ChatGPT之路?

1月7日&#xff0c;在2025年CES電子展現場&#xff0c;黃仁勛不僅展示了他全新的皮衣和采用Blackwell架構的RTX 50系列顯卡&#xff0c;更進一步展現了他對于機器人技術領域&#xff0c;特別是人形機器人和通用機器人技術的篤信。黃仁勛認為機器人即將迎來ChatGPT般的突破&…

EF Core執行原生SQL語句

目錄 EFCore執行非查詢原生SQL語句 為什么要寫原生SQL語句 執行非查詢SQL語句 有SQL注入漏洞 ExecuteSqlInterpolatedAsync 其他方法 執行實體相關查詢原生SQL語句 FromSqlInterpolated 局限性 執行任意原生SQL查詢語句 什么時候用ADO.NET 執行任意SQL Dapper 總…