自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

TAG:定義自然語(yǔ)言查詢的高效解決方案 原創(chuàng)

發(fā)布于 2025-1-7 08:12
瀏覽
0收藏

摘要

TAG(Table-Augmented Generation)模型通過結(jié)合關(guān)系型數(shù)據(jù)庫(kù)的精準(zhǔn)計(jì)算能力和大語(yǔ)言模型的語(yǔ)義推理能力,為復(fù)雜的自然語(yǔ)言查詢提供了高效解決方案。TAG 的核心流程分為查詢合成、查詢執(zhí)行和答案生成三步,能夠靈活處理多數(shù)據(jù)源的交互式查詢?nèi)蝿?wù)。通過引入語(yǔ)言模型,TAG 不僅可以執(zhí)行傳統(tǒng) SQL 查詢,還能在情感分析、趨勢(shì)總結(jié)等語(yǔ)義推理任務(wù)中展現(xiàn)卓越性能。本文詳細(xì)解析了 TAG 的功能和機(jī)制,同時(shí)引入 LOTUS 系統(tǒng)作為其具體實(shí)現(xiàn),展示了如何通過模塊化語(yǔ)義操作符進(jìn)一步優(yōu)化數(shù)據(jù)查詢效率與推理能力。

什么是 TAG

在現(xiàn)代商業(yè)和數(shù)據(jù)分析場(chǎng)景中,許多重要的信息都存儲(chǔ)在關(guān)系型數(shù)據(jù)庫(kù)中,用戶需要通過自然語(yǔ)言查詢來獲取反饋。例如,一個(gè)零售經(jīng)理可能會(huì)問:“過去一個(gè)月,某個(gè)商品類別的銷售趨勢(shì)是什么?”或者“客戶對(duì)新產(chǎn)品的評(píng)價(jià)有哪些共性?”這些問題的答案不僅需要從數(shù)據(jù)庫(kù)中提取相關(guān)信息,還需要進(jìn)一步結(jié)合上下文進(jìn)行語(yǔ)義推理和總結(jié)。

為了解決這些復(fù)雜的問題,Table-Augmented Generation (TAG) 應(yīng)運(yùn)而生。TAG 模型不僅能夠高效處理結(jié)構(gòu)化數(shù)據(jù),還通過引入語(yǔ)言模型實(shí)現(xiàn)語(yǔ)義推理和復(fù)雜的多步推斷。這一特性使 TAG 成為解決復(fù)雜查詢的強(qiáng)大工具。

TAG 模型通過三個(gè)主要步驟——查詢合成(Query Synthesis)、查詢執(zhí)行(Query Execution)和答案生成(Answer Generation)——結(jié)合了語(yǔ)言模型(LM)和數(shù)據(jù)庫(kù)系統(tǒng)的優(yōu)點(diǎn)。例如,在電商分析場(chǎng)景中,TAG 可以從多個(gè)數(shù)據(jù)源提取銷售記錄,結(jié)合時(shí)間信息進(jìn)行趨勢(shì)分析,并進(jìn)一步利用語(yǔ)言模型總結(jié)出關(guān)鍵洞察,例如“本月銷售額增長(zhǎng)的主要原因是某爆款商品的熱銷”。

此外,在情感分析場(chǎng)景中,TAG 也展現(xiàn)了獨(dú)特的優(yōu)勢(shì)。例如,用戶查詢“客戶對(duì)某產(chǎn)品的評(píng)價(jià)是正面還是負(fù)面?”時(shí),TAG 能夠提取評(píng)價(jià)文本,結(jié)合語(yǔ)言模型進(jìn)行情感分類,并生成總結(jié),例如“90%的客戶反饋是正面的,主要提到產(chǎn)品的性價(jià)比和質(zhì)量”。TAG 在處理多樣化的查詢時(shí)比傳統(tǒng)方法表現(xiàn)更好,尤其是在涉及到情感分析、趨勢(shì)總結(jié)等需要推理和通用知識(shí)的任務(wù)時(shí),表現(xiàn)尤為突出。

為什么需要使用TAG

大家有沒有遇到過這種場(chǎng)景,用戶提出比較復(fù)雜的問題,而系統(tǒng)需要通過關(guān)系型數(shù)據(jù)庫(kù)進(jìn)行搜索并給予反饋。比如“總結(jié)經(jīng)典最賣座浪漫電影的評(píng)論”。我們需要搜索出最賣座的電影,然后找到該電影的評(píng)論信息(多條),最后將這些信息進(jìn)行匯總形成摘要返回給用戶?;舅悸肥?,在數(shù)據(jù)庫(kù)中進(jìn)行多表查詢、匯總、聚合等操作,還需要配合大語(yǔ)言模型結(jié)合上下文給出答復(fù)。

其中最容易讓人想到的方式是,通過將自然語(yǔ)言請(qǐng)求轉(zhuǎn)化為數(shù)據(jù)庫(kù)查詢,執(zhí)行查詢后返回相關(guān)結(jié)果。這種方式可以準(zhǔn)確定位符合條件的數(shù)據(jù)記錄,但這種方式無法進(jìn)一步總結(jié)或推理。這類功能背后的技術(shù)實(shí)現(xiàn)被稱為 Text2SQL,它將自然語(yǔ)言翻譯為 SQL 查詢語(yǔ)句并在數(shù)據(jù)庫(kù)中執(zhí)行。然而,Text2SQL 的能力僅限于數(shù)據(jù)的直接檢索,對(duì)于更復(fù)雜的分析或多層次推理,它顯得力不從心。

另一種方法是通過語(yǔ)義檢索技術(shù)實(shí)現(xiàn)。這種方法將文本信息存儲(chǔ)在向量數(shù)據(jù)庫(kù)中,隨后通過相似度計(jì)算(如余弦相似度)來找到最相關(guān)的記錄。這一技術(shù)被稱為 RAG (Retrieval-Augmented Generation)。RAG 的優(yōu)勢(shì)在于,它能夠結(jié)合語(yǔ)言模型生成自然語(yǔ)言答案,并通過向量檢索高效處理文本匹配問題。然而,當(dāng)需要對(duì)來自多個(gè)數(shù)據(jù)表的信息進(jìn)行聚合或復(fù)雜推理時(shí),RAG 同樣面臨挑戰(zhàn)。

為了克服這些局限性,TAG (Table-Augmented Generation) 提供了更強(qiáng)大的解決方案,特別是在多數(shù)據(jù)源和跨表操作場(chǎng)景中展現(xiàn)了其獨(dú)特的優(yōu)勢(shì)。TAG 不僅能夠像 Text2SQL 一樣將自然語(yǔ)言查詢轉(zhuǎn)化為 SQL 并高效執(zhí)行,還可以靈活地處理來自多個(gè)表的數(shù)據(jù)關(guān)聯(lián),同時(shí)引入語(yǔ)言模型的推理能力,進(jìn)一步豐富查詢結(jié)果的語(yǔ)義表達(dá)。

例如,針對(duì)“總結(jié)經(jīng)典最賣座浪漫電影的評(píng)論”這一請(qǐng)求,TAG 不僅能找到“泰坦尼克號(hào)”的相關(guān)評(píng)論,還能利用語(yǔ)言模型深入分析這些評(píng)論內(nèi)容并生成總結(jié),例如“泰坦尼克號(hào)的評(píng)論主要提到其出色的敘事和視覺效果”。通過結(jié)合數(shù)據(jù)庫(kù)的精確計(jì)算能力與語(yǔ)言模型的語(yǔ)義推理能力,TAG 成為處理復(fù)雜查詢和提供上下文豐富答案的最優(yōu)選擇。

Text2SQL、RAG和TAG之間的區(qū)別

通過上面“浪漫電影”的例子,我們提到了三個(gè)技術(shù),分別是:Text2SQL、RAG以及TAG,他們是AIGC發(fā)展不同時(shí)代的產(chǎn)物。下面,我們對(duì)他們進(jìn)行一個(gè)橫向比較。

Text2SQL

它主要通過將自然語(yǔ)言查詢轉(zhuǎn)換為SQL查詢來執(zhí)行,適用于那些有明確數(shù)據(jù)庫(kù)關(guān)系映射的查詢。它的問題很明顯,無法處理需要語(yǔ)義推理、情感分析或其他復(fù)雜推理的查詢。例如,無法理解用戶查詢中的隱含含義,如“哪些客戶對(duì)產(chǎn)品X的評(píng)價(jià)是正面的”。

RAG (Retrieval-Augmented Generation)

基于檢索的生成方法,它從外部數(shù)據(jù)庫(kù)中檢索與查詢相關(guān)的信息,然后通過LM生成答案。通常用于執(zhí)行基于相關(guān)性簡(jiǎn)單查找的任務(wù)。RAG只能處理點(diǎn)查找類問題,不能有效地進(jìn)行數(shù)據(jù)聚合、復(fù)雜計(jì)算或多步推理。例如,無法處理“為什么我的銷售在這段時(shí)間下降”這樣的查詢,它涉及到復(fù)雜的數(shù)據(jù)匯總和推理。

TAG (Table-Augmented Generation)

TAG結(jié)合了Text2SQL和RAG的優(yōu)點(diǎn),通過三個(gè)主要步驟(查詢合成、查詢執(zhí)行和答案生成)高效地回答自然語(yǔ)言查詢。其優(yōu)勢(shì)比較明顯: 

查詢合成:將用戶的自然語(yǔ)言查詢轉(zhuǎn)換為可執(zhí)行的數(shù)據(jù)庫(kù)查詢(SQL)。

查詢執(zhí)行:在數(shù)據(jù)庫(kù)中高效執(zhí)行查詢,獲取相關(guān)數(shù)據(jù)。

答案生成:結(jié)合數(shù)據(jù)庫(kù)中的數(shù)據(jù)和語(yǔ)言模型生成最終的自然語(yǔ)言答案,進(jìn)行復(fù)雜的推理和總結(jié)。

TAG的創(chuàng)新在于,除了處理傳統(tǒng)數(shù)據(jù)庫(kù)查詢(如SQL),它還能夠處理需要推理、推斷世界知識(shí)的查詢,適用于需要復(fù)雜推理和多層次數(shù)據(jù)交互的查詢。

我們將三者的區(qū)別整理為如下表格。

從表格可以看出,Text2SQL 的強(qiáng)項(xiàng)在于直接提取結(jié)構(gòu)化數(shù)據(jù),RAG 在文本相關(guān)性查找方面表現(xiàn)優(yōu)異,而 TAG 通過結(jié)合 SQL 查詢和語(yǔ)言模型的語(yǔ)義推理能力,實(shí)現(xiàn)了前兩者無法完成的復(fù)雜查詢。TAG 特別適合需要跨表分析、數(shù)據(jù)聚合和復(fù)雜推理的場(chǎng)景,例如總結(jié)最經(jīng)典的浪漫愛情電影評(píng)論,或分析客戶對(duì)新產(chǎn)品的綜合反饋。

TAG:定義自然語(yǔ)言查詢的高效解決方案-AI.x社區(qū)

TAG 的內(nèi)部機(jī)制

TAG 系統(tǒng)在解決復(fù)雜自然語(yǔ)言查詢時(shí),與傳統(tǒng)方法的處理流程有顯著不同,特別是在引入推理能力和豐富上下文答案方面表現(xiàn)卓越。

如下圖所示,TAG通過以下三個(gè)主要步驟, 實(shí)現(xiàn)了高效的自然語(yǔ)言查詢回答:

查詢合成(Query Synthesis): 首先,將用戶的自然語(yǔ)言請(qǐng)求轉(zhuǎn)換為可執(zhí)行的數(shù)據(jù)庫(kù)查詢。與 Text2SQL 不同,TAG 不僅可以生成 SQL 查詢,還能夠合成結(jié)合多個(gè)數(shù)據(jù)源和類型的復(fù)雜查詢。例如,請(qǐng)注意以下示例:

用戶查詢“總結(jié)被認(rèn)為是‘經(jīng)典’的最賣座浪漫電影的評(píng)論”,TAG 將其翻譯為如下 SQL 查詢:

WITH CRM AS (SELECT * FROM movies WHERE genre = 'Romance' 
AND LLM('{movie_title} is a classic') = 'True')
SELECT * FROM CRM 
WHERE revenue = (SELECT MAX(revenue) FROM CRM);

在此過程中,TAG 使用 LLM 調(diào)用 LLM('{movie_title} is a classic') = 'True' 來引入新的推理能力。這一步驟被稱為“增強(qiáng)”步驟,因?yàn)樗鼣U(kuò)展了 SQL 查詢的能力,讓其能夠結(jié)合數(shù)據(jù)庫(kù)之外的上下文信息(例如電影是否被認(rèn)為是“經(jīng)典”)。

查詢執(zhí)行(Query Execution): 一旦查詢被合成,它就會(huì)在數(shù)據(jù)庫(kù)中高效執(zhí)行。TAG 利用數(shù)據(jù)庫(kù)的計(jì)算能力來處理大規(guī)模數(shù)據(jù)檢索和精確計(jì)算,而這是語(yǔ)言模型難以直接執(zhí)行的。

答案生成(Answer Generation): 在最后一步,AI 模型基于檢索到的數(shù)據(jù)生成上下文的答案。通過增強(qiáng)步驟提供的語(yǔ)義推理能力,TAG 能夠?qū)⑸舷挛男畔?、通用知識(shí)以及特定領(lǐng)域的理解融入答案中,從而顯著提升回答的準(zhǔn)確性和自然性。例如,TAG 在答案生成過程中,利用大語(yǔ)言模型的多層次推理能力,對(duì)檢索到的內(nèi)容進(jìn)行深度語(yǔ)義解析,并結(jié)合額外的上下文知識(shí)(如領(lǐng)域術(shù)語(yǔ)和用戶查詢背景)生成自然語(yǔ)言答案。

TAG:定義自然語(yǔ)言查詢的高效解決方案-AI.x社區(qū)

在上述示例中,TAG 系統(tǒng)可以總結(jié)返回的電影評(píng)論,生成答案如“泰坦尼克號(hào)的評(píng)論主要提到其出色的敘事和視覺效果”,而這種總結(jié)得益于語(yǔ)言模型對(duì)評(píng)論內(nèi)容的多步推理與聚合分析能力。

下面讓我們近距離解析,TAG 處理自然語(yǔ)言查詢的三個(gè)步驟:

查詢合成(Query Synthesis)

查詢合成的核心是將用戶的自然語(yǔ)言請(qǐng)求轉(zhuǎn)化為數(shù)據(jù)庫(kù)可以執(zhí)行的查詢 。這一過程包含兩個(gè)關(guān)鍵任務(wù):

推斷相關(guān)數(shù)據(jù):確定回答查詢所需的數(shù)據(jù),例如從數(shù)據(jù)庫(kù)表的模式(schema)中推斷出相關(guān)字段。

語(yǔ)義解析:利用語(yǔ)言模型的語(yǔ)義推理能力,將自然語(yǔ)言請(qǐng)求轉(zhuǎn)化為可執(zhí)行的查詢(例如 SQL)。

當(dāng)用戶查詢:“總結(jié)最高票房的經(jīng)典浪漫電影的評(píng)論”,系統(tǒng)生成的 SQL 查詢:結(jié)合了關(guān)系表字段(如 movie_title、review、revenue 和 genre),并利用語(yǔ)言模型過濾符合“經(jīng)典”條件的記錄。

查詢執(zhí)行(Query Execution)

查詢執(zhí)行步驟的核心是利用數(shù)據(jù)庫(kù)引擎高效地執(zhí)行生成的查詢 ,并返回相關(guān)數(shù)據(jù)表 。此步驟可以通過支持 LM(語(yǔ)言模型) 操作的數(shù)據(jù)庫(kù) API 實(shí)現(xiàn)更復(fù)雜的計(jì)算和推理。在上述示例中,生成的 SQL 查詢首先過濾出浪漫電影,并通過 LM 判斷哪些電影屬于“經(jīng)典”范疇,接著按票房排名找到最高票房的電影,并返回與該電影相關(guān)的評(píng)論數(shù)據(jù)表 。

答案生成(Answer Generation)

答案生成步驟通過語(yǔ)言模型的語(yǔ)義推理能力,根據(jù)用戶請(qǐng)求 和查詢結(jié)果數(shù)據(jù) 生成最終的自然語(yǔ)言答案 。

TAG 系統(tǒng)對(duì)返回的 (例如“泰坦尼克號(hào)”的評(píng)論數(shù)據(jù))進(jìn)行語(yǔ)義分析,總結(jié)評(píng)論內(nèi)容,并生成自然語(yǔ)言答案,例如“泰坦尼克號(hào)的評(píng)論大多是積極的,觀眾對(duì)其敘事和視覺效果贊譽(yù)有加”。

TAG 的研究方向

除了上面對(duì)多表查詢方面的表現(xiàn)以外,TAG 模型在查詢類型、數(shù)據(jù)模型、執(zhí)行引擎以及生成模式等多個(gè)方面都展現(xiàn)了獨(dú)特的優(yōu)勢(shì)和擴(kuò)展可能性。

首先,TAG 在查詢類型的多樣性上表現(xiàn)出色。它不僅能夠處理簡(jiǎn)單的點(diǎn)查詢,比如用戶希望快速檢索單行或少量數(shù)據(jù)的任務(wù),還能應(yīng)對(duì)復(fù)雜的聚合查詢。例如,一個(gè)零售經(jīng)理可能需要總結(jié)過去一個(gè)月內(nèi)的銷售趨勢(shì),這需要 TAG 在數(shù)據(jù)庫(kù)中整合多行數(shù)據(jù)并利用語(yǔ)言模型進(jìn)行邏輯推理。此外,TAG 還能勝任情感分析和分類等需要語(yǔ)義推理的高級(jí)任務(wù)。

其次,TAG 的底層數(shù)據(jù)模型設(shè)計(jì)靈活,能夠適配多種數(shù)據(jù)類型。傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù),如關(guān)系型數(shù)據(jù)庫(kù)中的表格信息,能夠通過 TAG 得到高效處理。同時(shí),TAG 還能處理半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù),比如自由文本、圖像、視頻和音頻,這為多模態(tài)數(shù)據(jù)的集成提供了可能性。這種靈活性讓 TAG 在多樣化的數(shù)據(jù)場(chǎng)景中都有應(yīng)用空間。

TAG 的數(shù)據(jù)庫(kù)執(zhí)行引擎支持多種實(shí)現(xiàn)方式,使其適用于不同的查詢需求。對(duì)于結(jié)構(gòu)化數(shù)據(jù),TAG 通過 SQL 查詢的生成和執(zhí)行實(shí)現(xiàn)高效數(shù)據(jù)檢索。對(duì)于語(yǔ)義檢索場(chǎng)景,TAG 能夠?qū)⒆匀徽Z(yǔ)言查詢轉(zhuǎn)化為向量嵌入,并通過相似性匹配實(shí)現(xiàn)高效數(shù)據(jù)查找。此外,TAG 還可以集成新興的增強(qiáng)型執(zhí)行方法,比如語(yǔ)義操作符模型,它允許開發(fā)者在數(shù)據(jù)庫(kù)中直接執(zhí)行復(fù)雜的語(yǔ)義過濾和排序操作。

在生成模式方面,TAG 提供了從簡(jiǎn)單到復(fù)雜的多種實(shí)現(xiàn)選項(xiàng)。簡(jiǎn)單的生成模式如單次語(yǔ)言模型調(diào)用,適用于快速回答的任務(wù)。而復(fù)雜的生成模式則通過多步迭代或遞歸的方式實(shí)現(xiàn)更深層次的推理和數(shù)據(jù)整合。例如,對(duì)于需要在多行數(shù)據(jù)中發(fā)現(xiàn)隱含關(guān)系的任務(wù),TAG 能夠利用語(yǔ)言模型多次調(diào)用生成完整且語(yǔ)義豐富的答案。

TAG功能雖然強(qiáng)大,如果需要落地應(yīng)用必須經(jīng)過最佳實(shí)踐,于是就有了 LOTUS。LOTUS 構(gòu)建在 TAG 的理論基礎(chǔ)之上,進(jìn)一步優(yōu)化了查詢執(zhí)行的效率,并提供了類似 Pandas 的直觀 API,使開發(fā)者可以通過聲明式的語(yǔ)義操作符快速實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)查詢?nèi)蝿?wù)。LOTUS 還通過模塊化設(shè)計(jì)支持?jǐn)U展,能夠集成不同的數(shù)據(jù)源和多種 AI 模型,從而為復(fù)雜自然語(yǔ)言查詢提供了更加高效的解決方案。

LOTUS:基于LLM的數(shù)據(jù)查詢引擎

LOTUS 是一個(gè)結(jié)合了結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)處理能力的查詢引擎,它讓基于大語(yǔ)言模型(LLM)的數(shù)據(jù)處理變得快速且簡(jiǎn)單。

基本介紹

LOTUS(LLMs Over Tables of Unstructured and Structured Data)提供了一種聲明式編程模型和優(yōu)化的查詢引擎,可以針對(duì)結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)構(gòu)建強(qiáng)大的基于推理的查詢管道。LOTUS 通過類似 Pandas 的簡(jiǎn)單直觀 API 實(shí)現(xiàn)語(yǔ)義操作符,簡(jiǎn)化了開發(fā)人員編寫 AI 驅(qū)動(dòng)查詢的復(fù)雜性。

基本概念

LOTUS 的核心是語(yǔ)義操作符(Semantic Operator)編程模型:

  • 語(yǔ)義操作符:對(duì)一個(gè)或多個(gè)數(shù)據(jù)集進(jìn)行聲明式轉(zhuǎn)換,這些轉(zhuǎn)換通過自然語(yǔ)言表達(dá)式參數(shù)化,并可由多種 AI 算法實(shí)現(xiàn)。
  • 擴(kuò)展關(guān)系模型:語(yǔ)義操作符能夠?qū)Π瑐鹘y(tǒng)結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化字段(如自由文本)的表操作。
  • 模塊化與組合性:操作符支持編寫高級(jí)邏輯的 AI 管道,查詢引擎負(fù)責(zé)高效執(zhí)行。

LOTUS 支持的主要語(yǔ)義操作符包括:

  • sem_map:將每條記錄映射為基于自然語(yǔ)言描述的屬性。例如,可以將商品描述轉(zhuǎn)換為更具體的類別標(biāo)簽,例如將“iPhone 13”映射為“智能手機(jī)”。
  • sem_filter:篩選符合自然語(yǔ)言謂詞的記錄。例如,篩選出所有“價(jià)格大于100元且評(píng)分高于4星”的商品,通過語(yǔ)言模型解析謂詞條件進(jìn)行精確篩選。
  • sem_agg:對(duì)所有記錄進(jìn)行聚合,例如總結(jié)出“所有商品的平均價(jià)格”和“評(píng)分最高的商品”。
  • sem_topk:根據(jù)自然語(yǔ)言指定的排序規(guī)則選出前K條記錄。例如,“找出評(píng)分最高的前5個(gè)商品”。
  • sem_join:基于自然語(yǔ)言謂詞連接兩個(gè)數(shù)據(jù)集。例如,將訂單數(shù)據(jù)與用戶數(shù)據(jù)通過自然語(yǔ)言謂詞“匹配下單金額大于500元的用戶及其訂單”進(jìn)行跨表關(guān)聯(lián)。
  • sem_sim_join:基于語(yǔ)義相似性連接兩個(gè)數(shù)據(jù)集。例如,將一列文章標(biāo)題與另一列新聞?wù)ㄟ^內(nèi)容相似度進(jìn)行匹配。
  • sem_search:在文本列中執(zhí)行語(yǔ)義搜索。例如,“在評(píng)論列中查找提到‘服務(wù)很好’的所有記錄”。

支持模型

LOTUS 支持以下三種主要模型類別:

LM(語(yǔ)言模型):

基于 LiteLLM 庫(kù)構(gòu)建,支持所有 LiteLLM 支持的模型(如 OpenAI、Ollama 和 vLLM)。

可參考 LiteLLM 文檔了解更多使用示例。

RM(檢索模型):

使用 SentenceTransformers 提供的模型進(jìn)行語(yǔ)義檢索。

可通過 SentenceTransformersRM 類加載任意模型。

Reranker(重排序模型):

使用 SentenceTransformers 提供的 CrossEncoder 模型進(jìn)行語(yǔ)義重排序。

安裝指南

要安裝 LOTUS,請(qǐng)按照以下步驟操作:

創(chuàng)建 Conda 環(huán)境:

conda create -n lotus python=3.10 -y
conda activate lotus

使用 pip 安裝 LOTUS:

pip install lotus-ai

如果在 Mac 上運(yùn)行,請(qǐng)通過 Conda 安裝 FAISS:

僅 CPU 版本:

conda install -c pytorch faiss-cpu=1.8.0

GPU (+CPU) 版本:

conda install -c pytorch -c nvidia faiss-gpu=1.8.0

通過上述步驟,你即可快速搭建 LOTUS 環(huán)境,為后續(xù)的代碼開發(fā)和測(cè)試做好準(zhǔn)備。

LOTUS 的模塊化設(shè)計(jì)使得它能夠靈活支持各種應(yīng)用場(chǎng)景,并為復(fù)雜自然語(yǔ)言查詢提供了高效解決方案。

示例代碼與解釋

以下代碼展示了 LOTUS 的一個(gè)簡(jiǎn)單用例,通過 sem_join 操作實(shí)現(xiàn)課程和技能的語(yǔ)義匹配。用戶通過自然語(yǔ)言定義查詢邏輯,LOTUS 結(jié)合語(yǔ)言模型執(zhí)行查詢,最終返回結(jié)果。

import pandas as pd
import lotus
from lotus.models import LM

# configure the LM, and remember to export your API key
lm = LM(model="gpt-4o-mini")
lotus.settings.configure(lm=lm)

# create dataframes with course names and skills
courses_data = {
    "Course Name": [
        "History of the Atlantic World",
        "Riemannian Geometry",
        "Operating Systems",
        "Food Science",
        "Compilers",
        "Intro to computer science",
    ]
}
skills_data = {"Skill": ["Math", "Computer Science"]}
courses_df = pd.DataFrame(courses_data)
skills_df = pd.DataFrame(skills_data)

# lotus sem join 
res = courses_df.sem_join(skills_df, "Taking {Course Name} will help me learn {Skill}")
print(res)

# Print total LM usage
lm.print_total_usage()

我們將上述代碼代碼進(jìn)行詳細(xì)拆解如下:

初始化環(huán)境和數(shù)據(jù):

import pandas as pd

courses_data = {
    "Course Name": [
        "History of the Atlantic World",
        "Riemannian Geometry",
        "Operating Systems",
        "Food Science",
        "Compilers",
        "Intro to computer science",
    ]
}
skills_data = {"Skill": ["Math", "Computer Science"]}

courses_df = pd.DataFrame(courses_data)
skills_df = pd.DataFrame(skills_data)
print("Courses DataFrame:")
print(courses_df)
print("\nSkills DataFrame:")
print(skills_df)

配置 gpt-4o-mini 作為語(yǔ)言模型。創(chuàng)建兩個(gè)數(shù)據(jù)框 courses_df 和 skills_df,分別包含課程名稱和技能。courses_df 包含課程名稱,這些課程可能涉及到多個(gè)領(lǐng)域。skills_df 列出了技能名稱,這些技能對(duì)應(yīng)課程的學(xué)習(xí)目標(biāo)。數(shù)據(jù)框?yàn)楹罄m(xù)的語(yǔ)義連接操作提供了清晰的輸入。兩個(gè)集合的對(duì)象"Course Name"和"Skill" 會(huì)在后面的代碼中進(jìn)行語(yǔ)義關(guān)聯(lián)。

語(yǔ)義連接操作:

from lotus.models import LM
import lotus

# 配置語(yǔ)言模型
lm = LM(model="gpt-4o-mini")
lotus.settings.configure(lm=lm)

# 語(yǔ)義連接
res = courses_df.sem_join(skills_df, "Taking {Course Name} will help me learn {Skill}")
print("\nResult of Semantic Join:")
print(res)

sem_join 操作基于自然語(yǔ)言模板,通過語(yǔ)言模型解析 Course Name 和 Skill 之間的語(yǔ)義關(guān)系。這里通過”{}” 包括兩個(gè)數(shù)據(jù)集中的對(duì)象,用來表示需要處理具體對(duì)象的語(yǔ)義關(guān)系。想判斷課程(Course Name)與技能(Skill)之間的關(guān)系,“History of the Atlantic World” 是否與“Math”匹配由語(yǔ)言模型判斷。

執(zhí)行上述代碼得到如下結(jié)果:

TAG:定義自然語(yǔ)言查詢的高效解決方案-AI.x社區(qū)

清楚地看到課程(Course Name)與技能(Skill)之間的關(guān)系。Sem_join是LOTUS眾多操作之中的一種,它的功能就是將兩個(gè)不同數(shù)據(jù)集的數(shù)據(jù)進(jìn)行關(guān)聯(lián)。通過執(zhí)行過程我們發(fā)現(xiàn)它也遵循TAG的三個(gè)步驟:

查詢合成(Query Synthesis):

自然語(yǔ)言模板定義了匹配邏輯(如 "Taking {Course Name} will help me learn {Skill}")。

查詢執(zhí)行(Query Execution):

LOTUS 的 sem_join 調(diào)用語(yǔ)言模型完成語(yǔ)義匹配,并返回匹配結(jié)果。

答案生成(Answer Generation):

匹配結(jié)果以 Pandas 數(shù)據(jù)框形式返回,便于進(jìn)一步分析和使用。

深入源代碼

由于好奇sem_join 功能是如何實(shí)現(xiàn)的,我們通過Github查看了對(duì)應(yīng)的源碼。

TAG:定義自然語(yǔ)言查詢的高效解決方案-AI.x社區(qū)

通過分析,sem_join 的功能主要通過以下五個(gè)步驟實(shí)現(xiàn),每個(gè)步驟對(duì)應(yīng)不同的核心函數(shù)和邏輯。

第一步:輸入數(shù)據(jù)的準(zhǔn)備與轉(zhuǎn)換

首先,sem_join 接收兩個(gè)輸入數(shù)據(jù)序列(l1 和 l2),并將它們轉(zhuǎn)換為多模態(tài)信息,為后續(xù)的語(yǔ)義處理提供基礎(chǔ)。

代碼中使用了 task_instructions.df2multimodal_info 函數(shù),將輸入的 Pandas Series 轉(zhuǎn)換為模型可處理的格式:

left_multimodal_data = task_instructions.df2multimodal_info(l1.to_frame(col1_label), [col1_label])
right_multimodal_data = task_instructions.df2multimodal_info(l2.to_frame(col2_label), [col2_label])

這一步的主要作用是將數(shù)據(jù)框的列名與具體的上下文綁定,為語(yǔ)言模型生成語(yǔ)義匹配提供豐富的背景信息。

第二步:構(gòu)造語(yǔ)義連接任務(wù)

通過自然語(yǔ)言模板描述連接邏輯,例如 "Taking {Course Name} will help me learn {Skill}",并將其傳遞給語(yǔ)言模型進(jìn)行解析和處理。

在代碼中,模板被注入到語(yǔ)義過濾器中,通過調(diào)用

task_instructions.merge_multimodal_info 函數(shù)合并多模態(tài)數(shù)據(jù):
modified_docs = task_instructions.merge_multimodal_info([i1], right_multimodal_data)

合并后的數(shù)據(jù)被傳遞給語(yǔ)言模型,用于執(zhí)行語(yǔ)義匹配任務(wù)。

第三步:語(yǔ)義過濾與模型推理

語(yǔ)義過濾是 sem_join 的核心部分。通過調(diào)用 sem_filter 函數(shù),sem_join 利用語(yǔ)言模型對(duì)數(shù)據(jù)對(duì)進(jìn)行語(yǔ)義推理,判斷哪些記錄匹配。

語(yǔ)義過濾的核心代碼如下:

output = sem_filter(
    modified_docs,
    model,
    user_instruction,
    examples_multimodal_data=examples_multimodal_data,
    examples_answers=examples_answers,
    cot_reasoning=cot_reasoning,
    default=default,
    strategy=strategy,
    show_progress_bar=False,
)

模型的輸出包括匹配結(jié)果、原始輸出和解釋信息,為最終的連接結(jié)果提供依據(jù)。

第四步:結(jié)果組合與優(yōu)化

在語(yǔ)義過濾的基礎(chǔ)上,sem_join 將所有匹配記錄整合為一個(gè)結(jié)果集合。對(duì)于高置信度和低置信度的匹配記錄,系統(tǒng)通過優(yōu)化策略減少模型調(diào)用次數(shù),提升運(yùn)行效率。

結(jié)果組合部分的代碼如下:

join_results.extend(
    [
        (id1, ids2[i], explanation)
        for i, (output, explanation) in enumerate(zip(outputs, explanations))
        if output
    ]
)

優(yōu)化邏輯通過函數(shù) join_optimizer 實(shí)現(xiàn),選擇成本最低的連接計(jì)劃,進(jìn)一步提升連接效率。

第五步:輸出結(jié)果與分析

最后,sem_join 將語(yǔ)義連接的結(jié)果封裝為 SemanticJoinOutput 對(duì)象,包含匹配記錄、過濾結(jié)果、模型原始輸出和解釋信息。用戶可以通過返回的數(shù)據(jù)框進(jìn)一步分析連接結(jié)果。

返回結(jié)果的代碼如下:

return SemanticJoinOutput(
    join_results=join_results,
    filter_outputs=filter_outputs,
    all_raw_outputs=all_raw_outputs,
    all_explanations=all_explanations,
)

總結(jié)

TAG 模型的出現(xiàn)填補(bǔ)了傳統(tǒng)數(shù)據(jù)查詢技術(shù)與現(xiàn)代語(yǔ)義推理需求之間的空白。通過結(jié)合 SQL 查詢和大語(yǔ)言模型,TAG 在復(fù)雜查詢、推理和結(jié)果生成方面展現(xiàn)了強(qiáng)大的能力。本文不僅分析了 TAG 的理論基礎(chǔ),還通過 LOTUS 系統(tǒng)的實(shí)例演示了其實(shí)際應(yīng)用潛力。LOTUS 的模塊化設(shè)計(jì)和直觀 API 為開發(fā)者實(shí)現(xiàn)復(fù)雜語(yǔ)義查詢提供了便利工具,表明 TAG 和 LOTUS 在多數(shù)據(jù)源、跨領(lǐng)域數(shù)據(jù)分析中的重要地位和廣闊前景。

作者介紹

崔皓,51CTO社區(qū)編輯,資深架構(gòu)師,擁有18年的軟件開發(fā)和架構(gòu)經(jīng)驗(yàn),10年分布式架構(gòu)經(jīng)驗(yàn)。


?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦