Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
LangChainとSupabaseを活用して、RAGを実装してみた
Search
Atsushi Miyamoto
December 05, 2024
Technology
1
780
LangChainとSupabaseを活用して、RAGを実装してみた
Supabase LW13 Tokyo MeetupのLT資料です!
Atsushi Miyamoto
December 05, 2024
Tweet
Share
More Decks by Atsushi Miyamoto
See All by Atsushi Miyamoto
Agentic RAG with LangGraph
atsushii
1
480
Asynqを使って、サクッと非同期処理を実現する
atsushii
0
350
Checkpointerを介して、DynamoDBに状態を保存してみた
atsushii
1
260
OOM発生時のトラブルシューティング Profilerを活用できるか調査してみた
atsushii
1
590
Other Decks in Technology
See All in Technology
Introduction to Bill One Development Engineer
sansan33
PRO
0
300
もう外には出ない。より快適なフルリモート環境を目指して
mottyzzz
13
9.4k
ソフトウェアエンジニアの生成AI活用と、これから
lycorptech_jp
PRO
0
850
物体検出モデルでシイタケの収穫時期を自動判定してみた。 #devio2025
lamaglama39
0
280
Claude Code Subagents 再入門 ~cc-sddの実装で学んだこと~
gotalab555
10
17k
組織改革から開発効率向上まで! - 成功事例から見えたAI活用のポイント - / 20251016 Tetsuharu Kokaki
shift_evolve
PRO
2
230
それでも私が品質保証プロセスを作り続ける理由 #テストラジオ / Why I still continue to create QA process
pineapplecandy
0
170
会社を支える Pythonという言語戦略 ~なぜPythonを主要言語にしているのか?~
curekoshimizu
3
600
「魔法少女まどか☆マギカ Magia Exedra」におけるバックエンドの技術選定
gree_tech
PRO
0
120
Wasmの気になる最新情報
askua
0
180
What's new in OpenShift 4.20
redhatlivestreaming
0
110
AI駆動で進める依存ライブラリ更新 ─ Vue プロジェクトの品質向上と開発スピード改善の実践録
sayn0
1
200
Featured
See All Featured
Designing for humans not robots
tammielis
254
26k
Java REST API Framework Comparison - PWX 2021
mraible
34
8.9k
Unsuck your backbone
ammeep
671
58k
A better future with KSS
kneath
239
18k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
Six Lessons from altMBA
skipperchong
29
4k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
What's in a price? How to price your products and services
michaelherold
246
12k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Transcript
© 2024 Loglass Inc. 0 © 2024 Loglass Inc. LangChainと
Supabaseを活用して、 RAGを実装してみた 宮本 淳志 2024.11.20
© 2024 Loglass Inc. 1 自己紹介 自動車整備士としてキャリアをスタートし、退職後カナダのバンクーバーへ渡航。その後、プログラ ミングを現地の学校で勉強した後に、機械学習エンジニアとして現地のスタートアップでエンジニア としてのキャリアをスタートさせる。 2年半カナダに滞在したのち、福岡へ移住。
福岡の受託開発会社でバックエンドエンジニアとして3年ほど勤務。バックエンド・フロント・インフ ラの経験を積む。 2024年10月に株式会社ログラスへクラウドエンジニアとして入社。 生成AI入門中 株式会社ログラス クラウドエンジニア 宮本 淳志 Atsushi Miyamoto
© 2024 Loglass Inc. 2
© 2024 Loglass Inc. 3 Loglassについて
© 2024 Loglass Inc. 4 Loglassについて
© 2024 Loglass Inc. 5 今日話すこと 0. 背景 1. RAGとは
2. Supabase Vector DBについて 3. GCP Vertex AI Agent BuilderからSupabaseに乗り換えた話 4. Supabase x LangChainを使ってRAGの実装 5. まとめ Agenda
© 2024 Loglass Inc. 6 個人開発でAI Chatbotを開発していて、その過程でLangChainとSupabaseを使って、RAG(Retrieval Augmented Generation)を実装したので、その経験を共有したいと思います。 また開発の過程で、
GCP Vertex AI Agent BuilderからSupabaseへ乗り換えたので、その辺りもお話しできればと 思います。 実際に実務で活用してる、みたいなお話はできないのでご了承ください..! 00|背景 背景
© 2024 Loglass Inc. 7 01 RAGとは
© 2024 Loglass Inc. 8 01|RAGとは RAG(Retrieval Augmented Generation)の概要 大規模言語モデル(LLM)の出力を最適化するプロセス
LLMの応答生成前に外部の信頼できる知識ベースを参照して、回答の質を向上させることが可能 利点: • 最新の情報へのアクセス ◦ OpenAIのgpt-4o-2024-11-20のモデルの場合2023/10月カットオフ • 信頼性の強化 ◦ 出力へ参照元の資料のURLなども含めることが可能 • ハルシネーションの低減 ◦ 外部知識に基づいて回答を生成させるため、LLMが誤った回答をするリスクを軽減 ※参考: https://aws.amazon.com/what-is/retrieval-augmented-generation/
© 2024 Loglass Inc. 9 01|RAGとは RAGの基本構成 ※参考: https://aws.amazon.com/jp/blogs/news/a-practical-guide-to-im prove-rag-systems-with-advanced-rag-on-aws/
1. 外部データ(ドキュメント)をベクトル化して、ベクトル データベースへ保存 2. ユーザが何かしらの質問を投げる 3. 埋め込みモデルが質問をベクトル化 4. データベースから質問に類似したチャンクを検索 5. LLMへの入力コンテキスト構築 6. LLMが回答生成 → 今回はベクトルデータベースとして、Supabaseを使用
© 2024 Loglass Inc. 10 02 Supabase Vector DBについて
© 2024 Loglass Inc. 11 情報をデータオブジェクトの数値表現であるベクトルにして保存するデータ ベース 画像、テキストや音声などの非構造データをベクトル化して保存が可能 ベクトル化することで、非構造データに対して検索をかけることができる 02|Supabase
Vector DBについて Vector DBとは? • Semantic Search ◦ 正確なキーワードではなく、ユーザーのクエリの背後にある意味を解釈して 検索する方法 • Keyword Search ◦ 主に検索語とデータ内のテキストとの完全一致に基づいて、特定の単語やフ レーズを含む文書やレコードを検索方法 • Hybrid Search ◦ Semantic SearchとKeyword Searchの長所を組み合わせた検索方法 例: ベクトル化されたテキスト 参考: https://supabase.com/docs/guides/ai
© 2024 Loglass Inc. 12 PostgreSQL拡張(pgvector)を利用してベクトルDBとして の機能を追加している 使用したい場合は、ダッシュボードもしくはSQLで有効化するだ けでOK 様々なサードパーティツールと統合可能
• LangChain • Hugging Face etc… (初期費用もかからず無料で試せます 02|Supabase Vector DBについて SupabaseでのVector DBの活用 拡張機能を有効化 参考: https://supabase.com/docs/guides/ai
© 2024 Loglass Inc. 13 03 GCP Vertex AI Agent
Builderから Supabaseに乗り換えた話
© 2024 Loglass Inc. 14 • 検証のために、コストが安いかつ迅速にRAGの仕組みを実 装したかった ◦ Cloud
Storageをデータソースとして指定可能 ◦ ノーコードで構築可能 03|GCP Vertex AI Agent BuilderからSupabaseに乗り換えた話 そもそもなぜVertexAIを使用 していたか
© 2024 Loglass Inc. 15 Supabaseに乗り換えた理由 • テナントごとにデータの管理をしたかった ◦ Vertex
AI Searchアプリ構築時に一つのデータ ストアしか紐付けできなかった ◦ 別テナントのデータもまとめて管理すると、異なる テナントのデータに対してもアクセスできてしまう ので、情報が取得できてしまう懸念があった 03|GCP Vertex AI Agent BuilderからSupabaseに乗り換えた話
© 2024 Loglass Inc. 16 04 Supabase x LangChain を使ってRAGの実装
© 2024 Loglass Inc. 17 • OpenAIのembeddingのモデルを指定 ◦ ベクトル化に使用 •
Supabaseをベクトルデータベースとして指定 • Supabaseで事前に作成してある、テーブルと functionを指定 04|Supabase x LangChainを使ってのRAGの実装 VectorStore作成 参考: https://js.langchain.com/docs/integrations/vectorstores/supabase/ #instantiation
© 2024 Loglass Inc. 18 04|Supabase x LangChainを使ってのRAGの実装 データの保存 •
受け取ったURLからhtmlを取得 • 前処理 ◦ textに変換 ◦ 不要な文字列を置き換え • チャンク • テナント固有のidを含めたmetadata作成 ◦ Document型で扱う • Vectorに保存 ◦ 内部的にベクトル化されたコンテンツが 保存される 参考: https://js.langchain.com/docs/integrations/vectorstores/supabase/#instantiation
© 2024 Loglass Inc. 19 04|Supabase x LangChainを使ってのRAGの実装 Document型
© 2024 Loglass Inc. 20 04|Supabase x LangChainを使ってのRAGの実装 保存内容 •
id • content ◦ 元々のテキスト • metadata ◦ domainId(テナント固有) • embedding (vector) ◦ contentがベクトル化されたもの
© 2024 Loglass Inc. 21 04|Supabase x LangChainを使ってのRAGの実装 検索 •
受け取ったクエリ(質問)でベクトルデータベースに対して、検索をかける ◦ metadataとして保存したdomainIdでフィルタリングすることで、該当のテナントデータにのみアクセスさせる
© 2024 Loglass Inc. 22 05 まとめと今後の展望
© 2024 Loglass Inc. 23 05|まとめと今後の展望 まとめと今後の展望 • SupabaseとLangChainを組み合わせることで、サクッとRAGの実装ができる •
IDで強引にフィルタリングしていたが、ちゃんとRLS使っていきたい ◦ NEONをメインDBとして使っているので、現状使えてない ▪ https://neon.tech/ • 来年こそ個人開発で収益出す
© 2024 Loglass Inc. 24