ビジネスデータは曖昧ではありません。曖昧なものとして検索するのはやめましょう。

ベクトルRAGは"sales in France"に類似度で答えます。Structured RAGは都市の列をwikipediaの国テーブルにリンクするので、質問は読めるSQLの結合になります。

ParisとStrasbourgはFranceに、BerlinはGermanyにつながっています。KehlはStrasbourgの隣にあり、2つの国の間に疑問符がついています。
検索の4つのレベル

AIは"sales in France"にどう答えるか

同じ質問を、4つの検索レベルで。答えを確認できるのは最後の1つだけです。

LLMが質問をSQLに変換

たとえば、CSVに都市の列はあっても国の列はないとします。都市の列にはParisとStrasbourgがありますが、絞り込みに使える国の列がありません。"France"はデータになく、クエリを書けません。

完全に失敗
LLMが質問をSQLに変換

類似度によるベクトル検索

各都市をベクトル埋め込みに変換して"France"を検索します。ParisとStrasbourgはフランスらしく見えるので返ってきます。Strasbourgの隣にあるドイツの町Kehlも返ってくることがあります。検索のどこにも、都市がどの国にあるかを示すものはありません。

ときどき失敗
類似度によるベクトル検索

LLMが類似ベクトルを使って回答

上の検索で最も近い行をLLMに渡すと、たいてい正しい合計を返します。しかし、どの都市がフランスとして数えられたかは見えません。幻覚を起こしたり間違った情報源を使ったりすることもありますが、信じるしかありません。

成功するがブラックボックス
LLMが類似ベクトルを使って回答

PrereasonerがSQLクエリを生成

都市の列はキーで国のテーブルにつながります:city → country → currency。"Sales in France"はSQLの結合になり、Kehlは除外され、クエリと一致した行が回答と一緒に返ってきます。

透明性を保って成功
PrereasonerがSQLクエリを生成
自社の参照テーブル

自社の参照テーブルで解決

自社の参照テーブル

goldやplatinumなどの値を持つtier列は、自社の顧客ランクのテーブルにあります。それをアップロードすれば、"revenue from platinum customers"はキーで結合されます。

自社の参照テーブル
真っ向勝負

Structured RAG vs ベクトルRAG

構造化データでベクトルRAGStructured RAG
文字列の列の使われ方ベクトルに埋め込みキーで参照テーブルにリンク
検索の仕組み最近傍の類似度SQLの結合
"Kehl"(Strasbourg近くのドイツの町)含まれることがある結合によって除外
行が返された理由類似度スコアSQL内の結合
非公開の参照テーブル再埋め込みキーで結合
合計を計算するものLLMデータベース
仕組み

型付け、リンク、結合、返却

01 型付け

各列に名前を付ける

Prereasonerが各列の中身を判別します。

02 リンク

外部キー

city → country → currency、または tier → 自社のtierテーブル。各リンクは参照テーブルのキーです。

03 結合

SQLクエリ

質問は、それらのテーブルをまたぐSQLの結合になります。

04 返却

クエリ付き

行と、それを返したSQLが手に入ります。

無料で始める

テキストの列は曖昧ではありません。曖昧なものとして検索するのはやめましょう

自分のCSVで試してください。必要なときに参照テーブルを追加できます。