Slide 1

Slide 1 text

テキスト検索の原点 全⽂検索のしくみと活⽤ポイント 検索のための「道具」を知ろう︕ @segavvy ©2024 segavvy 2024/1/18【StudyCo with Momento】LLMに独⾃知識で回答させる「RAG」の理解を深めよう 1 RAGでも活躍 ※個⼈で作成したものであり、内容や意⾒は所属企業・部⾨⾒解を代表するものではありません。

Slide 2

Slide 2 text

はじめに ©2024 segavvy 2024/1/18【StudyCo with Momento】LLMに独⾃知識で回答させる「RAG」の理解を深めよう 2 RAGといえば ベクトル検索でしょ︖ 検索もいろいろあるのか…… ⽬的にあわせて考えねば︕ 今 10分後 3章にわけてお話します よろしくお願いします︕

Slide 3

Slide 3 text

第1章 検索は「道具」 適切な道具を選べるようになろう︕ ©2024 segavvy 2024/1/18【StudyCo with Momento】LLMに独⾃知識で回答させる「RAG」の理解を深めよう 3

Slide 4

Slide 4 text

検索は「道具」 • ⽬的は「必要な情報を⾒つける」ことであり 「○○検索」はそのために使う「道具」 • 状況によって適切な道具は変わる a. ある商品のレビューと似たようなレビューを探したい時 レビューの⼀覧を⼆分探索したりはしない b. 商品コードがわかっている商品の在庫数が知りたい時 商品DBを全⽂検索したりはしない c. ソースコードから特定関数の呼び出し箇所を列挙したい時 ソースコードをベクトル検索したりはしない ©2024 segavvy 2024/1/18【StudyCo with Momento】LLMに独⾃知識で回答させる「RAG」の理解を深めよう 4

Slide 5

Slide 5 text

使い分けるために 道具を知ろう • 定型データ(数値、⽇付、固定⻑の⽂字列など)の検索道具は 基本アルゴリズムとして学ぶ機会が多い 線形探索、⼆分探索⽊、ハッシュテーブル、etc. • テキストデータの検索道具は 学ぶ機会が少ない ベクトル検索 ここまでのセッションでご紹介済み 全⽂検索 このセッションでご紹介 ©2024 segavvy 2024/1/18【StudyCo with Momento】LLMに独⾃知識で回答させる「RAG」の理解を深めよう 5

Slide 6

Slide 6 text

第1章のまとめ • 検索は 必要な情報を⾒つけるための道具 • 状況によって適切な道具は変わるので使い分けが必要 • そのために道具を知ろう︕ 第2章では全⽂検索の仕組みについてご紹介 ©2024 segavvy 2024/1/18【StudyCo with Momento】LLMに独⾃知識で回答させる「RAG」の理解を深めよう 6

Slide 7

Slide 7 text

©2024 segavvy 2024/1/18【StudyCo with Momento】LLMに独⾃知識で回答させる「RAG」の理解を深めよう 7 ʢٳܜʣࣗݾ঺հ ͕͑͠Β ͔ͨ͠ ߐ಄ و࢙ !TFHBWWZʢηΨϏʣ גࣜձࣾΞΠΞΫτ ਓ޻஌ೳɾίάχςΟϒιϦϡʔγϣϯ෦ ςΫχΧϧσ ΟϨΫλʔ݉ΧελϚʔαΫηενʔϜ Ϧʔμʔ ΋ͷͮ͘Γ΍࢓૊Έͮ͘Γ͕େ޷͖ɻ"*ͷࣾձ࣮૷ʹᬏਐதʂ

Slide 8

Slide 8 text

第2章 全⽂検索の仕組み ⼤量のテキストデータを ⾼速に検索する仕組み ©2024 segavvy 2024/1/18【StudyCo with Momento】LLMに独⾃知識で回答させる「RAG」の理解を深めよう 8

Slide 9

Slide 9 text

仕組みは本の索引と同じ 索引 【あ】 あご 3巻 13 ⾜ 4巻 239 頭 2巻 192 【い】 胃 2巻 28 【う】 腕 4巻 32 うなじ 2巻 129 本は索引を⾒れば ⽬的ページが すぐわかる 「⾜」については 4巻の239ページ︕ 全⽂検索でも 検索するために 索引をあらかじめ作っておく︕ ©2024 segavvy 2024/1/18【StudyCo with Momento】LLMに独⾃知識で回答させる「RAG」の理解を深めよう 9

Slide 10

Slide 10 text

索引に載せる⾔葉は どう選ぶのか︖ 索引にない⾔葉では 検索できない どんな条件でも検索できるように 索引を作る必要がある 代表的な 2つの作り⽅をご紹介 ○ ”AI” は検索できる × “RAG” は索引にないので 検索できない ⾔葉 単語の出現場所 AI ⽂書A(5、15⽂字⽬) ⽂書F(... 勉強 ⽂書A(8、18⽂字⽬) ⽂書G(… する ⽂書A(3、20⽂字⽬) ⽂書B(… ⼈達 ⽂書A(12⽂字⽬) ⽂書D(… ©2024 segavvy 2024/1/18【StudyCo with Momento】LLMに独⾃知識で回答させる「RAG」の理解を深めよう 10

Slide 11

Slide 11 text

索引の作成時 1.⽤語辞書(品詞や原形)を使い分解 2.助詞などの不要なものを除去 3.変化しているものを 原形へ戻す 索引の作り⽅︓①⽇本語解析 A I を勉強した⼈達 A I 勉強 する ⼈達 検索時 検索条件の⽂字に対して 同様の処理を実施してから 索引を調べる 索引を⾒て これらが すべてあるものを探す A I を 勉強 し た ⼈達 A I 勉強 し ⼈達 A I の勉強 A I 勉強 ©2024 segavvy 2024/1/18【StudyCo with Momento】LLMに独⾃知識で回答させる「RAG」の理解を深めよう 11

Slide 12

Slide 12 text

A I を勉強した⼈達 A I を勉強した⼈達 A I を勉強した⼈達 A I を勉強した⼈達 A I を勉強した⼈達 A I を勉強した⼈達 A I を勉強した⼈達 A I を勉強した⼈達 索引の作り⽅︓②単純に切り刻む A I を勉強した⼈達 検索時 検索条件の⽂字に対して 同じ⽂字数で切り出す 最後の半端は前の⽂字で ⽂字数を合わせる※ 索引を⾒て これらが すべてあるものを探す 索引の作成時 1⽂字ずつ ずらしながら 固定の⽂字数で 切り出していく A I の勉強 A I の勉 勉強 ※ 切り出し ⽂字数が2の場合 ©2024 segavvy 2024/1/18【StudyCo with Momento】LLMに独⾃知識で回答させる「RAG」の理解を深めよう 12

Slide 13

Slide 13 text

②単純に切り刻む︓⾔葉の途中が該当 東京都府中市 は 東京 京都 都府 府中 中市 に分解 “京都” で検索されてしまう 索引の課題 ①⽇本語解析︓解析ミス Honda Cars 東京都 は Honda Cars 東京 都 に分解 解析部分を調整したり 後処理で不要なものを除いたり 両⽅の⽅式を組み合わせたり etc. 正しくは ひがしきょうと Honda Cars 東京都 ©2024 segavvy 2024/1/18【StudyCo with Momento】LLMに独⾃知識で回答させる「RAG」の理解を深めよう 13 “京都” で検索できない “東京” で検索されてしまう

Slide 14

Slide 14 text

表記のゆれに対応する仕組み ゆれを統⼀する表や 同義語辞書などを⽤意して処理 1 全半⾓ ABC = ABC アイウ = アイウ 2 ⼤⼩⽂字 ABC = abc ABC = abc 3 ひらがな・カタカナ りんご = リンゴ みかん = ミカン 4 数字 123 = 一二三 = 百二十三 = ⅠⅡⅢ 5 異体字・新旧字体 高 = 髙 斉 = 齊 辺 = 邊 6 送り仮名 引っ越し = 引越し = 引越 7 同義語 アメリカ = 米国 = 合衆国 = USA 8 記号 ー = ー = - = - = ― = ‐ ©2024 segavvy 2024/1/18【StudyCo with Momento】LLMに独⾃知識で回答させる「RAG」の理解を深めよう 14

Slide 15

Slide 15 text

第2章のまとめ 全⽂検索の仕組み 専⾨⽤語 1 事前に索引を作ること・その索引 インデキシング・インデックス 2 索引データ(⾔葉と出現位置の対応表) 転置インデックス、転置ファイル 3 索引作成のために 対象のデータを集めること クローリング、クロールする 4 ⽇本語の解析処理により ⾔葉を切り出すこと 形態素解析、分かち書き 5 検索で不要な 助詞などの⾔葉を 索引から除くこと ストップワードの除去 6 ⽂章を⼀定の⽂字数で単純に切り刻む⽅式 n-gram(エヌ・グラム) 7 ⽂章の分割ミスなどにより 検索に該当しないこと 検索もれ 8 ⽂章の分割ミスなどにより 間違って該当したデータ 検索ノイズ 9 表記ゆれを統⼀したり 辞書を使って対応する処理 正規化、ステミング、辞書展開 ©2024 segavvy 2024/1/18【StudyCo with Momento】LLMに独⾃知識で回答させる「RAG」の理解を深めよう 15

Slide 16

Slide 16 text

©2024 segavvy 2024/1/18【StudyCo with Momento】LLMに独⾃知識で回答させる「RAG」の理解を深めよう 16 ʢٳܜʣୈ̎ষͷݩهࣄͷ͝঺հ ୈষ͸೥݄ʹ ॻ͍ͨʮ୭Ͱ΋Θ͔Δશ จݕࡧೖ໳ʯͷൈਮͰ͢ ΋͏গ͠ৄ͘͠ղઆͯ͠ ͍·͢ͷͰɺ͝ڵຯ͕͋ Γ·ͨ͠Βͥͻʂ https://zenn.dev/segavvy/articles/e97fa8417a0ee3

Slide 17

Slide 17 text

第3章 検索道具の選び⽅ 選び⽅のポイントをいくつかご紹介 ©2024 segavvy 2024/1/18【StudyCo with Momento】LLMに独⾃知識で回答させる「RAG」の理解を深めよう 17

Slide 18

Slide 18 text

道具は万能ではないので組み合わせよう︕ 検索+ランカー 検索結果のランキング(ベクトル検索はベクトルの類似度、全⽂検索は BM25などの単語の出現頻度ベースが⼀般的)がイマイチの場合は 別のアルゴリズムや外部の情報でリランクする 検索+レコメンド どちらも「利⽤者が必要な情報を提供」という⽬的は同じ 利⽤者に合わせた情報や 検索では該当しない情報も提供できる ベクトル検索+全⽂検索 ベクトル検索は意味検索が得意で 全⽂検索は字⾯の検索が得意 両者を組み合わせて良いとこ取りする ©2024 segavvy 2024/1/18【StudyCo with Momento】LLMに独⾃知識で回答させる「RAG」の理解を深めよう 18

Slide 19

Slide 19 text

⽬的に合わせて道具を調整しよう︕ 全⽂検索は字⾯に関する調整がしやすい 固有の商品名・略称・型番などの同⼀視は同義語辞書で対応 法律⽂書や史料における異体字の区別は正規化で調整できる ベクトル検索ならLLMのファインチューニング ただし データセットの⽤意や過学習防⽌など 難易度は⾼そう…… ランカーによる調整も有効 ⽇付や参照頻度などの別フィールドによるリランクは⽐較的容易 対照学習によりランキングを調整できるものもある ©2024 segavvy 2024/1/18【StudyCo with Momento】LLMに独⾃知識で回答させる「RAG」の理解を深めよう 19

Slide 20

Slide 20 text

道具だけに頼らず⼯夫しよう︕ たとえば社内のファイルを⾃然⽂で検索したい場合 • ファイルが格納された既存DBのインデックスを流⽤する LLMに ⾃然⽂の条件からDB向けのクエリーを⽣成させる • 条件が単語のみだと検索の精度が上がらないので LLMに 必要な条件が揃うまで聞き返しをさせる 「RAG」で検索された時「RAGの何を知りたいですか︖」と聞き返す • ⼊⼒されなくても分かっている条件を⾃動的に補う 「RAGの概要が知りたい」でも営業職と技術職では欲しい情報が違う 所属部⾨と連動させて 条件を補完したり対象DBを選択したりする ©2024 segavvy 2024/1/18【StudyCo with Momento】LLMに独⾃知識で回答させる「RAG」の理解を深めよう 20

Slide 21

Slide 21 text

第3章のまとめ • 道具は万能ではないので組み合わせよう︕ • 道具を⽬的に合わせて調整しよう︕ • 道具だけに頼らず⼯夫しよう︕ 残念ながら まだ万能な検索道具はない 要件に合わせて取捨選択や⼯夫をしましょう︕ ©2024 segavvy 2024/1/18【StudyCo with Momento】LLMに独⾃知識で回答させる「RAG」の理解を深めよう 21

Slide 22

Slide 22 text

おわりに ©2024 segavvy 2024/1/18【StudyCo with Momento】LLMに独⾃知識で回答させる「RAG」の理解を深めよう 22 RAGといえば ベクトル検索でしょ︖ 検索もいろいろあるのか…… ⽬的にあわせて考えねば︕ 10分前 今 このお話が検索道具の理解の⼀助になれば幸いです お時間をいただき ありがとうございました