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

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

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

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句などの汎用的な検索条件ではない。