Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
LangChainとSupabaseを活用して、RAGを実装してみた
Search
Atsushi Miyamoto
December 05, 2024
Technology
1k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
LangChainとSupabaseを活用して、RAGを実装してみた
Supabase LW13 Tokyo MeetupのLT資料です!
Atsushi Miyamoto
December 05, 2024
More Decks by Atsushi Miyamoto
See All by Atsushi Miyamoto
Agentic RAG with LangGraph
atsushii
1
670
Asynqを使って、サクッと非同期処理を実現する
atsushii
0
740
Checkpointerを介して、DynamoDBに状態を保存してみた
atsushii
1
400
OOM発生時のトラブルシューティング Profilerを活用できるか調査してみた
atsushii
1
760
Other Decks in Technology
See All in Technology
人にやさしく、AIにやさしく、書き手を選ばないIaCのガードレール再考 / Rethinking IaC Guardrails for Humans and AI Alike
kohbis
3
610
高負荷プロダクション環境におけるAWS Lambdaのリアル 〜スケールとコストを左右する実行ライフサイクルの技術仕様〜
maimyyym
2
270
Cloudflare Workers 向けアプリを C# で構築する ~WASM Native AOT への道~
nenonaninu
1
1.4k
Oracle Cloud Network Path Analyzerを試してみた/I Tried Out Oracle Cloud Network Path Analyzer
masakiokuda
1
110
SREへの勘違いに気づいた後の話
tomodakengo
0
150
ボードゲームの遊び相手をFoundation Modelsで作る / iOSDC Japan 2026
genda
0
150
AIに賢く動いてもらうためのコンテキスト〜Snowflake女子会 vol.8
snowwmn0824
0
170
Genieを崇めよ
kameitomohiro
0
170
リアーキテクチャ後の障害ゼロを目指したShadow Testingの取り組み
nihonbuson
PRO
1
180
CLIライブラリ開発を支える技術
htnabe
0
150
特殊変数大全
dak2
0
120
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
12k
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
280
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
Accessibility Awareness
sabderemane
1
220
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.3k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
2k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
36k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
The SEO Collaboration Effect
kristinabergwall1
1
570
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