SlideShare a Scribd company logo
1 of 16
© 2023 NTT DATA Group Corporation
© 2023 NTT DATA Group Corporation
ChatGPTのデータソースにPostgreSQLを使う
2023/7/3 第42回 PostgreSQLアンカンファレンス@オンライン
株式会社NTTデータグループ 技術開発本部 石井愛弓
© 2023 NTT DATA Group GROUP Corporation 2
はじめに
© 2023 NTT DATA Group Corporation 3
ある日思った。ズボラ母(私)にもできる安上がりな教育コンテンツはないか。
• 毎日、親が小学生新聞を読み込み、その内容を題材にした穴埋め問題を作成し、ホワイトボードに出題。
• 子は毎朝起きたら新聞を読んでその穴埋め問題に取り組む…という素晴らしい記事を読んだ。
• すばらしい…新聞を楽しみながら読む習慣がつきそう…だが、ズボラ母にはできる気がしない…
• ChatGPTに問題作成をお願いしてみようかな!
© 2023 NTT DATA Group Corporation 4
4歳向けの問題を作成してもらう
…いまいちすぎる!
© 2023 NTT DATA Group Corporation 5
最新情報も取得できなかった
© 2023 NTT DATA Group Corporation 6
ChatGPTに感じた問題
通常のChatGPTでは、既存のインプットからしか、回答を得ることができない。
最新情報をデータソースにできないか?
自分で質の高いデータセットを作り、それを参照させることはできないか?
ChatGPTにPostgreSQLを使いたい!
そうすれば以下のようなものもデータソースにできるかも?
• 自分のオリジナルデータ
• 2021年9月以降の最新情報
© 2023 NTT DATA Group Corporation 7
ChatGPT Retrieval Plugin
• ChatGPTでプライベートなドキュメントにアクセスできるプラグイン
• ドキュメントの保存には、ベクトルデータベースを使用する
• 様々なデータベースに対応
• PostgreSQLも、pgvectorを使って、データソースにすることができる!
• OpenAIのtext-embeddin-ada-002モデルを使用している。
• 英語に最適化されているが、他の言語でも良好な結果を生成できるらしい
プラグイン自体は、OSS
ただしChatGPTでプラグイン機能を使うためには、ChatGPT Plus月額20ドル必要
かつ、プラグイン開発者のwaitlistで承認される必要あり。
© 2023 NTT DATA Group Corporation 8
全体像
• 事前にChatGPT retrieval pluginのAPIを使って、PDFのオリジナルデータをベクトルデータ
として、PostgreSQLに保存しておく。
• ChatGPTからこのプラグインを利用できるようにし、PostgreSQLに保存されたデータを利用す
る
• 問い合わせの自然言語をベクトル化し、PostgreSQLのベクトルと類似性の高いものを探す
PostgreSQL
オリジナルデータ
(PDF)
chatgpt-retrieval-plugin
upsert-file API
テキスト抽出&ベクトル化
ChatGPT
ベクトルデータ
データを利用
© 2023 NTT DATA Group Corporation 9
pgvector
https://github.com/pgvector/pgvector
PostgreSQLでベクトル類似性検索ができるようになる
vector型を含むテーブルを作成し、データが保存できる
CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3));
近いベクトルを探す
SELECT * FROM items ORDER BY embedding <-> '[3,1,2]' LIMIT 5;
Supabase、RDS(15.2以降)、Azureでも対応済み
© 2023 NTT DATA Group Corporation 10
事前準備
• Python 3.10をインストール
• PostgreSQLとpgvectorをインストール
• CREATE EXTENSION vector;
• chatgpt-retrieval-plugin をクイックスタートの通りにインストール
• https://github.com/openai/chatgpt-retrieval-plugin
• localhost:3333にサーバが起動された!
© 2023 NTT DATA Group Corporation 11
PostgreSQLでドキュメントテーブルを用意
create table if not exists documents (
id text primary key default gen_random_uuid()::text,
source text,
source_id text,
content text, ※原文
document_id text,
author text,
url text,
created_at timestamptz default now(),
embedding vector(1536) ※ベクトルデータ
);
© 2023 NTT DATA Group Corporation 12
PDFデータをPostgreSQLに挿入
upsert-fileエンドポイントに対して、PDF(今回はPostgreSQLドキュメント)を送る
curl -X POST -F file=@postgresql-15.0-A4.pdf http://localhost:3333/upsert-file
id | 8fc5de86-712f-43dc-b8d6-e56ccb582351_0
source | file
source_id |
content | PostgreSQL 15.0文書 PostgreSQL 15.0文書 PostgreSQLグローバル開発グループ 製作著作
c 1996?2022 The PostgreSQL Global Development Group, (翻訳)日本PostgreSQLユーザ 会 法的告知
Copyright c 1996?2022 PostgreSQLはPostgreSQLグローバル開発チームが著作権を有します。 Copyright c
1994?1995 Postgres95はカリ フォルニア大学評議員が著作権を有します。 日本PostgreSQLユーザ会(Japan
PostgreSQL User Group)は翻訳の著作権を有します。 Permission to use, copy, modify, and distribute
this software and its documentation
document_id | 8fc5de86-712f-43dc-b8d6-e56ccb582351
author |
url |
created_at | 2023-06-26 04:51:02.296534+00
embedding | [0.008476984,-0.012449941,0.006924103,……(略)
© 2023 NTT DATA Group Corporation 13
あとはプラグインを利用するだけ!
Develop your own plugin のボタンがなかった…プラグイン開発のwaitlist承認されないとダメな模様…。
続きは承認されてから…( ;∀;)
© 2023 NTT DATA Group Corporation 14
せっかくなので別のプラグインを使ってみた
© 2023 NTT DATA Group Corporation 15
その他、記載されている会社名、商品名、又はサービス名は、
各社の登録商標又は商標です。

More Related Content

What's hot

What's hot (20)

PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウト
 
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
 
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
 
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
 
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
 
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

More from NTT DATA Technology & Innovation

More from NTT DATA Technology & Innovation (20)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
 
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)
どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)
どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)
 
YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)
YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)
YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)
 
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
 

Recently uploaded

Recently uploaded (10)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 

ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)

  • 1. © 2023 NTT DATA Group Corporation © 2023 NTT DATA Group Corporation ChatGPTのデータソースにPostgreSQLを使う 2023/7/3 第42回 PostgreSQLアンカンファレンス@オンライン 株式会社NTTデータグループ 技術開発本部 石井愛弓
  • 2. © 2023 NTT DATA Group GROUP Corporation 2 はじめに
  • 3. © 2023 NTT DATA Group Corporation 3 ある日思った。ズボラ母(私)にもできる安上がりな教育コンテンツはないか。 • 毎日、親が小学生新聞を読み込み、その内容を題材にした穴埋め問題を作成し、ホワイトボードに出題。 • 子は毎朝起きたら新聞を読んでその穴埋め問題に取り組む…という素晴らしい記事を読んだ。 • すばらしい…新聞を楽しみながら読む習慣がつきそう…だが、ズボラ母にはできる気がしない… • ChatGPTに問題作成をお願いしてみようかな!
  • 4. © 2023 NTT DATA Group Corporation 4 4歳向けの問題を作成してもらう …いまいちすぎる!
  • 5. © 2023 NTT DATA Group Corporation 5 最新情報も取得できなかった
  • 6. © 2023 NTT DATA Group Corporation 6 ChatGPTに感じた問題 通常のChatGPTでは、既存のインプットからしか、回答を得ることができない。 最新情報をデータソースにできないか? 自分で質の高いデータセットを作り、それを参照させることはできないか? ChatGPTにPostgreSQLを使いたい! そうすれば以下のようなものもデータソースにできるかも? • 自分のオリジナルデータ • 2021年9月以降の最新情報
  • 7. © 2023 NTT DATA Group Corporation 7 ChatGPT Retrieval Plugin • ChatGPTでプライベートなドキュメントにアクセスできるプラグイン • ドキュメントの保存には、ベクトルデータベースを使用する • 様々なデータベースに対応 • PostgreSQLも、pgvectorを使って、データソースにすることができる! • OpenAIのtext-embeddin-ada-002モデルを使用している。 • 英語に最適化されているが、他の言語でも良好な結果を生成できるらしい プラグイン自体は、OSS ただしChatGPTでプラグイン機能を使うためには、ChatGPT Plus月額20ドル必要 かつ、プラグイン開発者のwaitlistで承認される必要あり。
  • 8. © 2023 NTT DATA Group Corporation 8 全体像 • 事前にChatGPT retrieval pluginのAPIを使って、PDFのオリジナルデータをベクトルデータ として、PostgreSQLに保存しておく。 • ChatGPTからこのプラグインを利用できるようにし、PostgreSQLに保存されたデータを利用す る • 問い合わせの自然言語をベクトル化し、PostgreSQLのベクトルと類似性の高いものを探す PostgreSQL オリジナルデータ (PDF) chatgpt-retrieval-plugin upsert-file API テキスト抽出&ベクトル化 ChatGPT ベクトルデータ データを利用
  • 9. © 2023 NTT DATA Group Corporation 9 pgvector https://github.com/pgvector/pgvector PostgreSQLでベクトル類似性検索ができるようになる vector型を含むテーブルを作成し、データが保存できる CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3)); 近いベクトルを探す SELECT * FROM items ORDER BY embedding <-> '[3,1,2]' LIMIT 5; Supabase、RDS(15.2以降)、Azureでも対応済み
  • 10. © 2023 NTT DATA Group Corporation 10 事前準備 • Python 3.10をインストール • PostgreSQLとpgvectorをインストール • CREATE EXTENSION vector; • chatgpt-retrieval-plugin をクイックスタートの通りにインストール • https://github.com/openai/chatgpt-retrieval-plugin • localhost:3333にサーバが起動された!
  • 11. © 2023 NTT DATA Group Corporation 11 PostgreSQLでドキュメントテーブルを用意 create table if not exists documents ( id text primary key default gen_random_uuid()::text, source text, source_id text, content text, ※原文 document_id text, author text, url text, created_at timestamptz default now(), embedding vector(1536) ※ベクトルデータ );
  • 12. © 2023 NTT DATA Group Corporation 12 PDFデータをPostgreSQLに挿入 upsert-fileエンドポイントに対して、PDF(今回はPostgreSQLドキュメント)を送る curl -X POST -F file=@postgresql-15.0-A4.pdf http://localhost:3333/upsert-file id | 8fc5de86-712f-43dc-b8d6-e56ccb582351_0 source | file source_id | content | PostgreSQL 15.0文書 PostgreSQL 15.0文書 PostgreSQLグローバル開発グループ 製作著作 c 1996?2022 The PostgreSQL Global Development Group, (翻訳)日本PostgreSQLユーザ 会 法的告知 Copyright c 1996?2022 PostgreSQLはPostgreSQLグローバル開発チームが著作権を有します。 Copyright c 1994?1995 Postgres95はカリ フォルニア大学評議員が著作権を有します。 日本PostgreSQLユーザ会(Japan PostgreSQL User Group)は翻訳の著作権を有します。 Permission to use, copy, modify, and distribute this software and its documentation document_id | 8fc5de86-712f-43dc-b8d6-e56ccb582351 author | url | created_at | 2023-06-26 04:51:02.296534+00 embedding | [0.008476984,-0.012449941,0.006924103,……(略)
  • 13. © 2023 NTT DATA Group Corporation 13 あとはプラグインを利用するだけ! Develop your own plugin のボタンがなかった…プラグイン開発のwaitlist承認されないとダメな模様…。 続きは承認されてから…( ;∀;)
  • 14. © 2023 NTT DATA Group Corporation 14 せっかくなので別のプラグインを使ってみた
  • 15. © 2023 NTT DATA Group Corporation 15