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
SQL Server ベクトル検索
Search
Oda Shinsuke
March 29, 2025
Programming
2k
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 LT
odashinsuke
0
780
型を合わせとくとデータが多くなっても安心
odashinsuke
0
400
Other Decks in Programming
See All in Programming
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
440
ランチタイムLT会3周年!ランチタイムLT会を3年間続けられたお話
y0hgi
1
130
Contextとはなにか
chiroruxx
1
390
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
250
エンジニア向け会社紹介/Findy Company Profile
findyinc
6
360k
はてなアカウント基盤 State of the Union
cockscomb
1
1.3k
継続モナドとリアクティブプログラミング
yukikurage
2
240
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
140
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
17
8.6k
act1-costs.pdf
sumedhbala
0
160
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
7
1.7k
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
210
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
The Spectacular Lies of Maps
axbom
PRO
1
850
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Believing is Seeing
oripsolob
1
160
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
480
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
150
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
410
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Paper Plane (Part 1)
katiecoart
PRO
0
9.5k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
600
Ethics towards AI in product and experience design
skipperchong
2
320
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
380
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 の単位 単位ベクトル、正規化とか出てくるはず… 多次元とか感覚的には理解できないけど、ちゃ んと計算出来るのは数学スゲー