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

LLMフレームワークLangChain入門 〜生成AIアプリ開発手法とベクトル検索

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

LLMフレームワークLangChain入門 〜生成AIアプリ開発手法とベクトル検索

Avatar for DATASTAX JAPAN

DATASTAX JAPAN

October 26, 2023
Tweet

More Decks by DATASTAX JAPAN

Other Decks in Technology

Transcript

  1. ©2023 DataStax. – All rights reserved
 2
 はじめに:本ウェビナーについて 本ウェビナーは、録画されたビデオの配信となります。
 


    
 オンラインで参加の方々へ
 
 プラットフォーム上で、ご質問いただくことが可能です。 
 ご覧の全ての方々へ
 
 ご質問・デモ・ご商談のご依頼は、[email protected]へお問合せください。
  2. ©2023 DataStax. – All rights reserved
 DataStaxのご紹介 本社
 
 Santa

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


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

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


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

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

    技術サポート パッケージ製品 クラウドサービス エンタープライズ オープンソース 市場投入までの期間短縮
  6. ©2023 DataStax. – All rights reserved
 包括的な オープンテクノロジー スタック オンプレとクラウドの両方で一

    貫して技術を提供 リアルタイムAI DataStaxが指向する マシンラーニング
 ストリーミング
 クラウド
 データ

  7. ©2023 DataStax. – All rights reserved
 ©2023 DataStax. – All

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

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

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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


    専用のベクトルストアでは、データ変更に伴うインデックスの更新による性能影響が顕著。 
 画像は、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/)より引用
  17. ©2023 DataStax. – All rights reserved
 SQL+ベクトル検索:容易な操作 23
 新たなデータ型 VECTORの導入

    新たなオペレーター ANN OFの導入 近似最近傍探索を実装 approximate nearest neighbor (ANN) インデックスを定義 Storage Attached Index
  18. ©2023 DataStax. – All rights reserved
 類似度の把握 24
 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;
  19. ©2023 DataStax. – All rights reserved
 ベクトルデータベースの持つ3つの課題 25
 • 検索インデックス更新


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

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


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

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


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

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

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

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

    Cassandra/AstraDBにアクセスする詳細を抽象化すること です。 CassIO は Cassandra/AstraDBをLangChain やLlamaIndexとシームレスに統合
  24. ©2023 DataStax. – All rights reserved
 生成AIにおける典型的なデータソース 33
 ドキュメント
 •

    社内文書(PDF等)
 ◦ 特定ドメインの資料(法律条文など) 
 ◦ 社内の福利厚生情報に関する質問など 
 
 
 
 テキスト
 • カタログデータ (書籍や映像コンテンツなど)の「概要」項目 
 • データベースのレコード中のテキスト文 
 
 
 

  25. ©2023 DataStax. – All rights reserved
 Document Loader 34
 https://github.com/langchain-ai/langchain/tree/master/libs/lang

    chain/langchain/document_loaders acreom.py airbyte.py airbyte_json.py airtable.py apify_dataset.py arcgis_loader.py arxiv.py assemblyai.py async_html.py azlyrics.py azure_blob_storage_container.py azure_blob_storage_file.py baiducloud_bos_directory.py baiducloud_bos_file.py base.py base_o365.py bibtex.py bigquery.py bilibili.py blackboard.py blob_loaders blockchain.py brave_search.py browserless.py chatgpt.py chromium.py college_confidential.py concurrent.py confluence.py conllu.py csv_loader.py cube_semantic.py datadog_logs.py dataframe.py diffbot.py directory.py discord.py docugami.py dropbox.py duckdb_loader.py email.py embaas.py epub.py etherscan.py evernote.py excel.py facebook_chat.py fauna.py figma.py gcs_directory.py gcs_file.py generic.py geodataframe.py git.py gitbook.py github.py googledrive.py gutenberg.py helpers.py hn.py html.py html_bs.py hugging_face_dataset.py ifixit.py image.py image_captions.py imsdb.py iugu.py joplin.py json_loader.py larksuite.py markdown.py mastodon.py max_compute.py mediawikidump.py merge.py mhtml.py modern_treasury.py mongodb.py news.py notebook.py notion.py notiondb.py nuclia.py obs_directory.py obs_file.py obsidian.py odt.py onedrive.py onedrive_file.py open_city_data.py org_mode.py parsers pdf.py polars_dataframe.py powerpoint.py psychic.py pubmed.py pyspark_dataframe.py python.py readthedocs.py recursive_url_loader.py reddit.py roam.py rocksetdb.py rspace.py rss.py rst.py rtf.py s3_directory.py s3_file.py sharepoint.py sitemap.py slack_directory.py snowflake_loader.py spreedly.py srt.py stripe.py telegram.py tencent_cos_directory.py tencent_cos_file.py tensorflow_datasets.py text.py tomarkdown.py toml.py trello.py tsv.py twitter.py unstructured.py url.py url_playwright.py url_selenium.py weather.py web_base.py whatsapp_chat.py wikipedia.py word_document.py xml.py xorbits.py youtube.py
  26. ©2023 DataStax. – All rights reserved
 ベクトルストア:組み込みレベルのベクトルストア 35
 Chromaを使えば、データベースについて 


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

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

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

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

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

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

    (コード内に) ハードコーディングされます。 • エージェントでは、言語モデルが推論エンジンとして使用され、どのアクションをどの順序で実行するかを決定します。 https://python.langchain.com/docs/modules/agents/ 3つの実行方法と違い • モデルを直接実行 • チェーン ◦ (モデルを直接実行する場合と比べて) バッチ処理の制御(MAP REDUCE等)等の利点がある • エージェントでは、言語モデルが推論エンジンとして使用され、どのアクションをどの順序で実行するかを決定し ます。 ◦ (チェーンと比べて)言語モデルを推論エンジン として利用するという利点がある
  30. ©2023 DataStax. – All rights reserved
 進んだ話題 48
 プロンプトエンジニアリング の発展とLangChainにおけるその実装


    https://www.promptingguide.ai/jp
 
 
 
 メモリー・キャッシュの活用