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
SQL Server ベクトル検索
Search
Oda Shinsuke
March 29, 2025
Programming
2.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SQL Server ベクトル検索
2025/03/29 meetup app @osaka9
https://meetupapp.connpass.com/event/348237/
Oda Shinsuke
March 29, 2025
More Decks by Oda Shinsuke
See All by Oda Shinsuke
SQL Server 2025 最適化されたロック
odashinsuke
0
96
SQL Server 2025 LT
odashinsuke
0
1k
型を合わせとくとデータが多くなっても安心
odashinsuke
0
410
Other Decks in Programming
See All in Programming
手動確認はもう限界 〜XCUITestでCustom URL Schemeの遷移を起動種別ごとに自動テストする〜 / Testing Custom URL Schemes with XCUITest
otouto
0
360
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
400
setup-vp GitLab対応の裏側
naokihaba
0
140
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
220
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
440
Agents on Rails - Rails at Scale 2026
irinanazarova
0
290
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
710
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
390
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
29
12k
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
160
Androidだけじゃない、DroidKaigiで広がった私の技術スタック
akkeylab
0
100
Featured
See All Featured
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
310
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
910
Side Projects
sachag
456
43k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
430
Making Projects Easy
brettharned
120
6.8k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
Designing for Timeless Needs
cassininazir
1
510
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
250
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
20k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Transcript
SQL Server ベクトル検索 meetup app Osaka@9 2025/03/29 @shinsukeoda
ベクトル検索 Azure SQL Database で public preview SQL Server 2025
からサポート SQL データベース エンジン内のベクター を操作する - SQL Server | Microsoft Learn
ベクトルってなに? 高校数学でやったやつ? 向きと大きさをもってた気がする 矢印みたいなイメージあった 数値の順序付けられた配列
ベクトル データ型 内部的には、JSON で表現した数値の配列 各要素は 単精度(4byte)浮動小数点 配列の最大次元 1998 (1998次元配列まで) 単精度浮動小数点
= float(24) or real create table [テーブル] ( [キー] bigint not null primary key , [ベクトル] vector(3) not null ) ; insert into [テーブル] ([キー], [ベクトル]) values (1, '[0.1, 2, 30]') , (2, '[-100.2, 0.123, 9.876]') ; select * from [テーブル] ベクトル データ型 (プレビュー) - SQL Server | Microsoft Learn
ベクトル 関数 vector_distance 距離計算 (今日はこれの話し) vector_norm ノルム(長さ)計算 vector_normalize 正規化 (指定ノルムで長さ1のベクトル)
ベクター関数 (Transact-SQL) - SQL Server | Microsoft Learn
vector_distance (距離計算) 3種類の計算方法 cosine - コサイン距離 euclidean - ユークリッド距離 dot
– (負の) ドット積 VECTOR_DISTANCE (Transact-SQL) - SQL Server | Microsoft Learn
コサイン距離 1 から コサイン類似度を引いたもの コサイン類似度 = 2つのベクトル間の確 度Θ に対するコサイン 1
- cosΘ 0 ~ 2 の範囲 0:同一のベクトル、2:反対のベクトル
コサイン距離 - 例 (1, 0), (0, 1) の2点のベクトルがあったとして vector_distance(‘cosine’, ‘[1,0]’,
‘[0,1]’) 90°なので cos90° = 0 1 – cos90° = 1 – 0 = 1
ユークリッド距離 2つのベクトル間の直線距離 √(a1 – b1)^2 + (a2 – b2)^2 +
… + (an – bn)^2 0:同一のベクトル 𝑎1 − 𝑏1 2 + 𝑎2 − 𝑏2 2 + ⋯ + 𝑎𝑛 − 𝑏𝑛 2
ユークリッド距離 - 例 (1, 0), (0, 1) の2点のベクトルがあったとして vector_distance(‘euclidean’, ‘[1,0]’,
‘[0,1]’) √(1 – 0)^2 + (0 – 1)^2 = √2 √2 = 1.41421356… 1 − 0 2 + 0 − 1 2 = 2
ドット積 ベクトルの大きさ * cosΘ ベクトルの内積 のこと (a1 * b1) +
(a2 * b2) + … SQL Server は では 負のドット積なので、 ((a1 * b1) + (a2 * b2) + …) * -1 最後に -1 掛ける 小さくなるほど、ベクトルが類似している
(負の)ドット積 - 例 (1, 0), (0, 1) の2点のベクトルがあったとして vector_distance(‘dot’, ‘[1,0]’,
‘[0,1]’) ((1 * 0) + (0 * 1)) * -1 0 * -1 = -0
どんな時に使い分ける? コサイン距離 方向性が一緒 (距離がどれだけ離れてても、 方向が一緒なら同じ) ユークリッド距離 単純に距離が近い・遠い 負のドット積 -1 掛けて小さいほどベクトルが似ている
ベクトルの大きさ * cosΘ なので、方向性 と距離が考慮されてそう?
正反対のものと、 同じ方向だけど距離が遠いもの -1 -0.5 0 0.5 1 1.5 2 2.5
3 3.5 -1 -0.5 0 0.5 1 1.5 2 2.5 3 3.5 軸ラベル 軸ラベル y 線形 (y)
正反対のものと、 同じ方向だけど距離が遠いもの
正反対のものと、 同じ方向だけど距離が遠いもの (-0.5, -0.5) は (0, 0) 挟んで反対だが距 離は近い 向きは反対だが近い
(3, 3) は 向きは同じだが、距離は遠い (0.5, 0.5) から距離が近いけど、真逆の (-0.5, -0.5) の方 が求められている結果? (0.5, 0.5) から距離が遠いけど、向きが同じの (3, 3) の方が 求められている結果? どんな検索をしたいかで変わってくるはず!!
Vectorize (ベクトル化) どんなものでも数値の配列にする テキストでも画像でも動画でもなんでもか んでも数値の配列にする SQL Server だと配列は 1998 次元まで
適当に数値化じゃダメ! 検索の話しで分かると思うけど、この数値 データが大事!
Vectorize (ベクトル化) この数値化で流行ってる AI/ML が使われ る 人がやってもいいけど、量が多いと大変だ し、やる人の感性によってしまう。 ルール決めてやった場合は、ルール通りに しかならないから、漏れるケースは無視さ
れる 絶対者がルールを決めて、ルール外はどうでもい いなら AI/ML じゃなくてもいいはず
感想・疑問 次元が増えた時に、無関係の内容に 0 入れてっ たら、殆どの次元が 0 になって、全然近くない のに近い扱いされない? 単位が違う次元が混じってたら距離での検索ヤ バそう?
1次元は -1.0~1.0の範囲、2次元は、1000, 2000 の単位 単位ベクトル、正規化とか出てくるはず… 多次元とか感覚的には理解できないけど、ちゃ んと計算出来るのは数学スゲー