Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LangChain体験入門Part2 ハイブリッド検索

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

LangChain体験入門Part2 ハイブリッド検索

Avatar for DATASTAX JAPAN

DATASTAX JAPAN

April 19, 2024
Tweet

More Decks by DATASTAX JAPAN

Other Decks in Technology

Transcript

  1. ©2023 DataStax. – All rights reserved
 前提条件 2
 環境
 •

    ノートPC(電源とWIFI接続は提供します)
 • Colaboratory
 ◦ https://colab.research.google.com/?hl=ja
 • OpenAI APIキーアカウント
 ◦ APIキー
 
 • Astra DBトライアルアカウント(クレジットカード入力不要・利用期間制限なし、月々無料枠あり) 
 ▪ https://astra.datastax.com/signup
 
 前提知識
 • プログラミング言語
 ◦ Python
 • データベース
 ◦ SQL

  2. ©2023 DataStax. – All rights reserved
 アジェンダ 3
 会場受付(13:00〜13:30)
 プレゼンテーション 

    (13:30~14:30)
 • 生成AI活用アプリケーション 
 • ベクトルデータベース 
 • LangChain
 • ハイブリッド検索
 
 休憩
 
 ハンズオン(14:45~16:30)
 • OpenAI APIを利用したLLMの利用
 • ベクトルデータベースを利用したセマンティクス検索 
 • LangChainを利用したRAGアプリケーション
 ◦ LLMとベクトルデータベースをフレームワークで扱う 
 

  3. ©2023 DataStax. – All rights reserved
 DataStaxのご紹介 本社
 
 Santa

    Clara, CA
 
 2010年4月創業
 
 Santa Clara • London • Paris • 
 Singapore • Tokyo •
 Sydney • Wellington
 
 
 
 
 オープンソースを基盤とした
 テクノロジースタックを
 エンタープライズ向けソリューション
 として提供
 DATASTAX JAPAN 2017年法人設立
  4. ©2023 DataStax. – All rights reserved
 Apache Cassandra オープンソース NoSQLデータベース


    分散アーキテクチャ
 ワイド カラム データ モデル
 低レイテンシ/ 無限のスケール
 単一障害点のない高可用性 

  5. ©2023 DataStax. – All rights reserved
 Apache Pulsar オープンソース
 メッセージング/ストリーミング


    ミドルウェア
 分散アーキテクチャ
 クラウドネイティブ設計
 保証されたメッセージ配信 
 軽量サーバーレス関数フレームワーク 
 階層型ストレージオフロード 

  6. ©2023 DataStax. – All rights reserved
 ニーズに応じたDataStaxテクノロジー活用 9
  DataStaxテクノロジー コミュニティー

    技術サポート パッケージ製品 クラウドサービス エンタープライズ オープンソース 市場投入までの期間短縮
  7. ©2023 DataStax. – All rights reserved
 DataStax は、AWS 生成AI コンピテンシー

    パート ナーとして認定されました。 10
 https://www.datastax.com/blog/datastax-is-now-an-aws-generative-ai-partner?utm_medium=social_organic&ut m_source=socialstax&utm_campaign=blog&utm_content=aws
  8. ©2023 DataStax. – All rights reserved
 ©2023 DataStax. – All

    rights reserved
 アジェンダ 13
 生成AI活用アプリケーション概要
 ベクトル検索
 LangChain
 

  9. ©2023 DataStax. – All rights reserved
 ユーザー 入力
 LLM
 データ

    データ システムからの
 応答
 プロンプト
 強化された
 応答
 生成AI活用 アプリ
 
 大規模言語モデル 
 コンテクスト 
 応答

  10. ©2023 DataStax. – All rights reserved
 ユーザー 入力
 データ 企業保有


    データ
 LLM
 データ システムからの
 応答
 強化された
 応答
 生成AI活用 アプリ
 
 増強されたLLM

  11. ©2023 DataStax. – All rights reserved
 ユーザー 入力
 データ 企業保有


    データ
 LLM
 データ システムからの
 応答
 強化された
 応答
 生成AI活用 アプリ
 
 増強されたLLM
 ファインチューニング
 A社のための LLM
 A社のための LLM
 再トレーニング

  12. ©2023 DataStax. – All rights reserved
 ユーザー 入力
 データ ユーザー入力+


    企業保有データ
 LLM
 データ システムからの
 応答
 生成AI活用 アプリ
 
 増強されたLLM
 プロンプト・エンジニアリング
 / コンテキスト・インジェスチョン (Context Ingestion)/
 RAG (Retrieval Augmented Generation) 検索拡張生成
 LLMへのリクエスト: 「・・・というユーザーのリクエストに答えよ。 その際、以下の関連するデータを活用せよ・・・」 企業の保有する大量のデータから関連するデータ(非 構造)を素早く見つけることが重要 

  13. ©2023 DataStax. – All rights reserved
 ユーザー 入力
 クエリ クエリ+


    企業保有データ
 LLM
 データ システムからの
 応答
 生成AI活用 アプリ
 
 増強されたLLM
 ベクトルストア/
 ベクトルデータベース 
 ベクトル検索

  14. ©2023 DataStax. – All rights reserved
 ベクトル検索とは何か? 21
 
 Googleいわく、「あらゆるデータ」を「瞬時に」アクセス(つまり検索)する技術


    
 https://cloud.google.com/blog/ja/topics/developers-practitioners/find-anything-blazingly-fast-googles-v ector-search-technology?hl=ja
 
 
 
 
 
 
 
 
 (非構造化)データのベクトル化 (Embedding) ベクトル同士の類似性を検出する (数学的)アルゴリズム ベクトルデータベースの 
 カバーする範囲
 エンベディングモデルの 
 カバーする範囲

  15. ©2023 DataStax. – All rights reserved
 ユーザー 入力
 クエリ クエリ+


    企業保有データ
 LLM
 データ システムからの
 応答
 生成AI活用 アプリ
 
 増強されたLLM
 ベクターデータベース 
 ベクターサーチ

  16. ©2023 DataStax. – All rights reserved
 独自のベクトル類似性検索エンジン ベクトル類似性検索
 Lucene
 SAI


    Storage Attached Index
 業界標準
 従来のCassandraのインデックスが持 つ課題を乗り越えるために 
 開発された独自のインデックス 
 JVector Lucene実装の課題を
 乗り越えるために開発された 
 独自のベクトル検索実装 
 • JVector は、 Lucene と比較して、最大 12.7 倍高いスループットを実現 初期の実装では
 業界標準のLuceneを採用

  17. ©2023 DataStax. – All rights reserved
 ノンブロッキングインデックス 24
 プロダクションシステムでは、データの追加・更新は大前提。 


    専用のベクトルストアでは、データ変更に伴うインデックスの更新による性能影響が顕著。 
 画像は、DataStaxブログ「5 Hard Problems in Vector Search, and How Cassandra Solves Them」 (https://thenewstack.io/5-hard-problems-in-vector-search-and-how-cassandra-solves-them/)より引用
  18. ©2023 DataStax. – All rights reserved
 AstraDBベクトル検索の特徴:DiskANN 25
 https://www.microsoft.com/en-us/research/project/project-akupara-approximate-nearest-neighbor -search-for-large-scale-semantic-search/

    既存のアルゴリズムには 2 つの主な欠点があります。 • 検索精度が低く、それによって下流の結果の品質に影響を与える • メモリ (DRAM) の占有面積が膨大であり、ウェブ規模でサービスを提供することが困難
  19. ©2023 DataStax. – All rights reserved
 SQL+ベクトル検索:容易な操作 26
 新たなデータ型 VECTORの導入

    近似最近傍探索を実装 approximate nearest neighbor (ANN) インデックスを定義 Storage Attached Index SELECT * FROM product ORDER BY item_vector ANN of [3.4, 7.8, 9.1]
 新たなオペレーター ANN OFの導入
  20. ©2023 DataStax. – All rights reserved
 類似度の把握 27
 https://docs.datastax.com/en/astra-serverless/docs/vector-search/cql.html SELECT

    description, similarity_cosine(item_vector, [0.1, 0.15, 0.3, 0.12, 0.05]) FROM vsearch.products ORDER BY item_vector ANN OF [0.1, 0.15, 0.3, 0.12, 0.05] LIMIT 1;
  21. ©2023 DataStax. – All rights reserved
 ベクトルデータベースの持つ3つの課題 28
 • 検索インデックス更新


    ◦ データは更新される
 ◦ 専用ベクトルストアは運用中のインデックス更新に難あり 
 
 • スケールアウト
 ◦ データは増える
 ◦ 性能要件は様々
 
 • データベースとしての汎用性
 ◦ ベクトル検索だけでは事足りない 
 ▪ 二つのデータベース(汎用とベクトルストア)を運用するか? 
 ▪ ベクトル検索機能を持った一つのデータベースを運用するのか? 
 ◦ 開発への影響
 ▪ 既存の知識・経験を活かせる利点 

  22. ©2023 DataStax. – All rights reserved
 生成AI活用の選択肢 30
 生成AI活用 アプリ


    
 PDFなどドキュメント情報の活 用:
 要約、意味検索(セマンティッ クサーチ)など
 チャット
 
 システム連携
 
 入力:
 • LLMへのクエリ
 • LLMへの指示
 
 出力:
 システムが利用できる形式での生 成AIへの出力指示(JSON等)
 

  23. ©2023 DataStax. – All rights reserved
 ユーザー 入力
 データ LLM


    データ システムからの
 応答
 生成AI活用 アプリ
 
 エージェント
 キャッシュ
 企業の
 プロプライエタリ データ
 プロンプトエンジニアリングの発展(真の価値): 
 LLMへの複数の問い合わせを組み合わせる 
 (繋げる→チェーンする)様々なテクニック 

  24. ©2023 DataStax. – All rights reserved
 LangChainを利用する利点 32
 • 生成AIアプリケーションの典型的な構造の表現

    
 ◦ モデル
 ◦ データ
 ▪ データソース(典型的なデータソースをベクトルストアにロードする機能) 
 ▪ ベクトルストア
 ◦ エージェント
 ▪ 入力:プロンプト
 ▪ 出力:コールバック
 
 • プロンプトエンジニアリングの様々なテクニックの実装 
 ◦ ReAct
 ◦ Chain Of Thought
 ◦ FLARE、等
 • 生成AIアプリケーションの構成要素の個別実装 
 ◦ LLM:OpenAI等
 ◦ ベクトルストア:PineCone, Cassandra等
 ◦ データローダー、等

  25. ©2023 DataStax. – All rights reserved
 CassIO 33
 https://cassio.org/ CassIOは、生成AIの一般的なニーズに合わせて

    Cassandra/AstraDBにアクセスする詳細を抽象化します。 CassIO は Cassandra/AstraDBをLangChainとシームレスに統合
  26. ©2023 DataStax. – All rights reserved
 生成AIにおける典型的なデータソース 36
 ドキュメント(非構造化データとして )


    
 • 社内文書(PDF等)
 ◦ 特定ドメインの資料(法律条文など) 
 ◦ 社内の福利厚生情報に関する質問など 
 
 
 テキスト(構造化データ中の)
 • カタログデータ (書籍や映像コンテンツなど)の「概要」項目 
 • コールセンターシステムの質疑応答記録 
 
 
 画像
 • カタログデータ(不動産賃貸売買管理システムにおける物件の画像など)の画像 
 • 調査データ(損保システムにおける損害箇所画像など)の画像 

  27. ©2023 DataStax. – All rights reserved
 ベクトルストア:組み込みレベルのベクトルストア 37
 Chromaを使えば、データベースについて 


    ◦ データベースをインストールして、接続ポイントやユーザーを利用したり 
 ◦ マネージドサービスに登録して、 APIのキーを利用したり 
 しなくてもすみますが ...
 Retrieverレベルで抽象化されているので、この構成で LangChainについて学習をスタートすることも可能 

  28. ©2023 DataStax. – All rights reserved
 自動生成されたテーブル 39
 利点
 •

    データ層の抽象化
 ◦ 自身でのデータモデル設計不要 
 ◦ 自身でのインデックス定義不要 
 • エンベディング処理の統一 /コード不要
 ◦ データの登録とクエリに同じエンベディン グモデルが自動的に利用される 
 • メタデータフィルタリングによる簡易な検索条 件追加
 • 統一的なデータ登録(ロード)と検索処理 

  29. ©2023 DataStax. – All rights reserved
 カスタムRetrieverの作成 41
 利点
 •

    データモデルの自由度 
 ◦ 既存データモデルの再利用・拡張 
 ◦ プライマリーキー、クラスタリングキー (=データ分散設計) 
 • データ登録(ロード)に必ずしも、 LangChain の利用・知識は不要 
 ◦ 特にPDFドキュメントのようなデータの チャンク化が不要な場合は簡便 
 • ネイティブ操作による自由度の高い検索条 件
 

  30. ©2023 DataStax. – All rights reserved
 初めに:チェーンとエージェント 43
 • チェーンでは、一連のアクションが

    (コード内に) ハードコーディングされます。 • エージェントでは、言語モデルが推論エンジンとして使用され、どのアクションをどの順序で実行するかを決定します。 https://python.langchain.com/docs/modules/agents/ 3つの実行方法と違い • モデルを直接実行 • チェーン ◦ (モデルを直接実行する場合と比べて) バッチ処理の制御(MAP REDUCE等)等の利点がある • エージェントでは、言語モデルが推論エンジンとして使用され、どのアクションをどの順序で実行するかを決定し ます。 ◦ (チェーンと比べて)言語モデルを推論エンジン として利用するという利点がある
  31. ©2023 DataStax. – All rights reserved
 RAGの現在と今後:アルゴリズム 48
 • Self-RAG:

    Learning to Retrieve, Generate, and Critique through Self-Reflection
 ◦ https://arxiv.org/abs/2310.11511
 ◦ ファインチューニングとの組み合わせにより、 RAGのプロセスに自己検証過程を組み込む 
 • CRAG: Corrective Retrieval Augmented Generation (「修正検索拡張生成」)
 ◦ https://arxiv.org/abs/2401.15884
 ◦ Self-RAGの発想の発展

  32. ©2023 DataStax. – All rights reserved
 RAGの現在と今後:フレームワーク 49
 https://github.com/langchain-ai/langgraph/blob/main/examples/rag/langgraph_self_rag.ipynb LangGraphによるSelf

    RAG実装
 https://python.langchain.com/docs/langgraph/ LangGraph : LLM を使用してステートフルなマルチアクター アプ リケーションを構築するためのライブラリ 異なる役割を持つコンポーネン トを 結果(ステート)に応じて遷移 する 巡回型のプロセスを構築できる
  33. ©2023 DataStax. – All rights reserved
 RAGの価値は、以下において高まる。 • より大きなデータセット との組み合わせ

    • より明確な目的を持つ「ポイントソリューション」(単なる自然言語の「要約」ではない価値提示) RAGの現在と今後:単なるRAGを超えて 50
 マルチモーダル化・より大きいインプットへの対応 Gemini 1.5: Unlocking multimodal understanding across millions of tokens of context https://storage.googleapis.com/deepmind-media/gemini/gemini_v1_5_report.pdf RAG IS DEAD? LLMが十分に大きなサイズの入力(トークン /プロンプト)を受け入れる ことができれば、 リクエストに関連するデータの Retrieval(検索)をLLMの外部で行わなくても 、 LLMにデータセット全体を渡して 、回答に有益な情報を LLMに選択(検索)させる ことができる。 (技術的には。トークン単位での課金などビジネス的には別の要素も大きい )
  34. ©2023 DataStax. – All rights reserved
 ここでの「ハイブリッド検索」とは 52
 ベクトル検索と (汎用DBのWHERE句)条件検索とのハイブリッドクエリ

    似ているが違うもの:相違点 • キーワード検索:数値比較なども含む • 複数の検索結果のマージ:DBへの一回のクエリで実現する
  35. ©2023 DataStax. – All rights reserved
 専用ベクトルストアの制約とハイブリッド検索 53
 専用ベクトルストアでも<ハイブリッドサーチ>機能は存在する 


    
 一般的な専用ベクトルストアの機能を反映した LangChainにもメタデータによる絞り込み は存在する。
 Pineconeのハイブリッド検索は、スパースベクターとの組み合わせによるハイブリッドインデックスによる 
 
 メタデータによる絞り込み は、キーワードの一致・不一致による選択抽出であり、数値比較や IN句などの汎用的な検索条件ではない。