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
人工無能たいたん
Search
hmatsu47
PRO
November 19, 2023
Technology
0
120
人工無能たいたん
JAWS-UG 名古屋 Amazon Bedrock ハンズオン 2023/11/20 LT
hmatsu47
PRO
November 19, 2023
Tweet
Share
More Decks by hmatsu47
See All by hmatsu47
HeatWave on AWS のインバウンドレプリケーションで HeatWave エンジン有効時のレプリケーションラグを確認してみた!
hmatsu47
PRO
0
5
CloudWatch Database Insights 関連アップデート
hmatsu47
PRO
0
13
さいきんの MySQL との付き合い方 〜 MySQL 8.0 より後の世界へようこそ 〜
hmatsu47
PRO
0
19
ベクトルストア入門
hmatsu47
PRO
0
18
Aurora DSQL について
hmatsu47
PRO
0
14
DynamoDB Global Tables MRSC・pgvector 0.8.0・caching_sha2_password 関連アップデート
hmatsu47
PRO
0
16
10 年(+1 年)の振り返りと 2025 年の活動予定
hmatsu47
PRO
0
32
RDS/Aurora アップデート(2024 年版)
hmatsu47
PRO
0
40
Aurora DSQL と楽観的同時実行制御(OCC)
hmatsu47
PRO
0
54
Other Decks in Technology
See All in Technology
アセスメントで紐解く、10Xのデータマネジメントの軌跡
10xinc
1
430
【2025年度新卒技術研修】100分で学ぶ サイバーエージェントのデータベース 活用事例とMySQLパフォーマンス調査
cyberagentdevelopers
PRO
5
7.3k
[2025年4月版] Databricks Academy ラボ環境 利用開始手順 / Databricks Academy Labs Onboarding
databricksjapan
0
140
Рекомендации с нуля: как мы в Lamoda превратили главную страницу в ключевую точку входа для персонализированного шоппинга. Данил Комаров, Data Scientist, Lamoda Tech
lamodatech
0
720
Amazon S3 Tables + Amazon Athena / Apache Iceberg
okaru
0
270
ブラウザのレガシー・独自機能を愛でる-Firefoxの脆弱性4選- / Browser Crash Club #1
masatokinugawa
1
470
システムとの会話から生まれる先手のDevOps
kakehashi
PRO
0
280
【Λ(らむだ)】最近のアプデ情報 / RPALT20250422
lambda
0
110
Porting PicoRuby to Another Microcontroller: ESP32
yuuu
4
410
Amazon CloudWatchで始める エンドユーザー体験のモニタリング
o11yfes2023
0
190
Mastraに入門してみた ~AWS CDKを添えて~
tsukuboshi
0
230
30代からでも遅くない! 内製開発の世界に飛び込み、最前線で戦うLLMアプリ開発エンジニアになろう
minorun365
PRO
2
180
Featured
See All Featured
Thoughts on Productivity
jonyablonski
69
4.6k
How GitHub (no longer) Works
holman
314
140k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
390
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.1k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
13
1.4k
Done Done
chrislema
183
16k
Designing for humans not robots
tammielis
252
25k
Making Projects Easy
brettharned
116
6.1k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.2k
Documentation Writing (for coders)
carmenintech
69
4.7k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
9
750
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Transcript
人工無能たいたん JAWS-UG 名古屋 Amazon Bedrock ハンズオン 2023/11/20 まつひさ(hmatsu47)
自己紹介…は(また)書く時間がなかったのでスキップ 松久裕保(@hmatsu47) • https://qiita.com/hmatsu47 2
本日のネタ着想元 • 10 月に「吉祥寺.pm 34」で話した内容 3
パソコン通信むかしばなし 吉祥寺.pm34【オンライン】 2023/10/31 まつひさ(hmatsu47)
BBS ソフトウェアをリニューアル • 自作に切り替え ◦ 骨格は BASIC ◦ 通信制御とその周辺部分のみアセンブリ言語で書き換え ◦
日本語対応強化 ◦ ファイル転送対応(XMODEM) ◦ ついでにゲームを実装 ◦ おまけとしてチャットに人工無能を追加 5 ←これで思いついた
本日のネタ • Bedrock のモデルを使って文章をベクトル化して ◦ Titan Embeddings G1 - Text
• Vector store に突っ込んで ◦ pgvector(PostgreSQL) • 入力した文章に近い意味の文章を返すチャットを作る ◦ いわゆる人工無能(無脳)の一種 ▪ おうむ返し・唐突なリアクション 6
本日のネタ • こちらを参考に(LangChain を使って) ◦ あえて質問を Claude に投げないスタイルで実装 ▪ https://gihyo.jp/book/2023/978-4-297-13839-4
7
GitHub リポジトリはこちら • https://github.com/hmatsu47/munou-chat 8
Titan Embeddings G1 - Text • 文章ベクトル化のためのモデル ◦ 1536 次元のベクトルを出力
▪ OpenAI の text-embedding-ada-002 と同じ ◦ 日本語にも対応 ▪ Titan Text G1 - Express / Lite(プレビュー)は日本語未対応 9
他の文書ベクトル化方法(従来からあったもの) • TF-IDF(例:scikit-learn(sklearn)の TfidfVectorizer) ◦ 文章中に出てくる単語の頻度とレア度を使ってベクトル化 ▪ 事前に形態素解析して単語に分解した状態の文章を使う ▪ TfidfVectorizer
では単語の頻度・レア度を無視する使い方も可能 ▪ FAQ サイトの関連質問へのリンク生成などに使用 ▪ https://github.com/hmatsu47/vaccinecert-qa-similarity-test (旧ワクチン証明書アプリ FAQ) • Word2vec(2013 年) ◦ 機械学習のモデル(群)by Google の研究チーム 10
文章をベクトル化すると? • ベクトルを比較することで近い意味の文章が検索可能 ◦ ベクトル間のユークリッド距離、コサイン類似度などで比較 ▪ 近いものから順に文章を抽出 ◦ 多言語対応モデルを使うと違う言語間の検索(比較)が可能 ▪
例:「これは猫です」と「This is a cat」が近いものとして抽出 11
pgvector • PostgreSQL 用の拡張機能(Extension) ◦ ベクトルデータの保存・検索が可能に ▪ 16,000 次元までのベクトルに対応 ▪
ユークリッド距離(L2 距離)、コサイン類似度などを計算し検索 ▪ INDEX の作成も可能(検索・比較を高速化) ▪ https://github.com/pgvector/pgvector ◦ 今回は Docker イメージを利用 ▪ https://hub.docker.com/r/ankane/pgvector 12
LangChain から使う • ストア(pgvector)から入力に類似する文章を取得 13 # ベクターストアから応答を取得 bedrock_client = boto3.client('bedrock-runtime',
region_name="ap-northeast-1") embeddings = BedrockEmbeddings( client=bedrock_client, model_id="amazon.titan-embed-text-v1" ) store = PGVector( collection_name=COLLECTION_NAME, connection_string=CONNECTION_STRING, embedding_function=embeddings, ) docs = store.similarity_search_with_score(trimed_prompt) (中略) # 近い文章を返す response = docs[0][0].page_content 1つ目([0])の要素=入力文書に最も近い文章を返す
LangChain から使う • ストア(pgvector)に文章を追加 14 # ベクターストアに入力を追加 store.add_documents([Document(page_content=trimed_prompt)]) 文章を渡すとベクトル値と一緒に保存される
一方、本編(ハンズオン)では • RAG の Retriever として Kendra を使用 • Kendra
はセマンティック検索が可能 ◦ 人が入力(質問)した文の意味に沿った検索 15
デモ • 最初はおうむ返し → 言葉を覚えるとズレた会話に 16
正しく RAG として使うには? • ストアから取得した文章はプロンプトの文脈として渡す ◦ LangChain では RetrievalQA でストアの
retriever を渡す ▪ そうすれば Claude がちゃんとした答えを返してくれるはず • 会話履歴もあわせて渡す ◦ ただし一問一答式の QA の場合は除く 17
まとめ • Titan Embeddings G1 - Text は日本語文章のベクトル化 に使える •
機能は正しく使うべし ◦ 今回はちょっと変な(間違った)使い方をしてみた 18