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
870
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
550
Asynqを使って、サクッと非同期処理を実現する
atsushii
0
480
Checkpointerを介して、DynamoDBに状態を保存してみた
atsushii
1
320
OOM発生時のトラブルシューティング Profilerを活用できるか調査してみた
atsushii
1
640
Other Decks in Technology
See All in Technology
あの夜、私たちは「人間」に戻った。 ── 災害ユートピア、贈与、そしてアジャイルの再構築 / 20260108 Hiromitsu Akiba
shift_evolve
PRO
0
490
Oracle Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
2
750
Next.js 16の新機能 Cache Components について
sutetotanuki
0
220
『君の名は』と聞く君の名は。 / Your name, you who asks for mine.
nttcom
1
150
AWS re:Invent 2025 を振り返る
kazzpapa3
2
110
Agentic AIが変革するAWSの開発・運用・セキュリティ ~Frontier Agentsを試してみた~ / Agentic AI transforms AWS development, operations, and security I tried Frontier Agents
yuj1osm
0
210
AIと融ける人間の冒険
pujisi
0
110
AI との良い付き合い方を僕らは誰も知らない (WSS 2026 静岡版)
asei
1
250
Everything As Code
yosuke_ai
0
500
SES向け、生成AI時代におけるエンジニアリングとセキュリティ
longbowxxx
0
310
ファインディにおけるフロントエンド技術選定の歴史
puku0x
1
450
Java 25に至る道
skrb
3
180
Featured
See All Featured
Google's AI Overviews - The New Search
badams
0
890
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
1
220
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Agile that works and the tools we love
rasmusluckow
331
21k
Designing for humans not robots
tammielis
254
26k
The browser strikes back
jonoalderson
0
300
KATA
mclloyd
PRO
33
15k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
120
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