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
650
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
0
400
Asynqを使って、サクッと非同期処理を実現する
atsushii
0
220
Checkpointerを介して、DynamoDBに状態を保存してみた
atsushii
1
190
OOM発生時のトラブルシューティング Profilerを活用できるか調査してみた
atsushii
1
540
Other Decks in Technology
See All in Technology
freeeのアクセシビリティの現在地 / freee's Current Position on Accessibility
ymrl
2
240
20250707-AI活用の個人差を埋めるチームづくり
shnjtk
6
4k
データ基盤からデータベースまで?広がるユースケースのDatabricksについて教えるよ!
akuwano
3
140
ビジネス職が分析も担う事業部制組織でのデータ活用の仕組みづくり / Enabling Data Analytics in Business-Led Divisional Organizations
zaimy
1
220
AI専用のリンターを作る #yumemi_patch
bengo4com
6
4.4k
shake-upを科学する
rsakata
7
800
Delta airlines®️ USA Contact Numbers: Complete 2025 Support Guide
airtravelguide
0
340
開発生産性を組織全体の「生産性」へ! 部門間連携の壁を越える実践的ステップ
sudo5in5k
3
7.5k
Operating Operator
shhnjk
1
620
American airlines ®️ USA Contact Numbers: Complete 2025 Support Guide
airhelpsupport
0
390
Rethinking Incident Response: Context-Aware AI in Practice
rrreeeyyy
1
130
United Airlines Customer Service– Call 1-833-341-3142 Now!
airhelp
0
170
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
The Language of Interfaces
destraynor
158
25k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
GitHub's CSS Performance
jonrohan
1031
460k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
54k
Faster Mobile Websites
deanohume
307
31k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Automating Front-end Workflow
addyosmani
1370
200k
How to Think Like a Performance Engineer
csswizardry
25
1.7k
Typedesign – Prime Four
hannesfritz
42
2.7k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
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