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
2.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
940
型を合わせとくとデータが多くなっても安心
odashinsuke
0
400
Other Decks in Programming
See All in Programming
20260828_品質と開発生産性を両立させる、AI時代のE2Eテストの考え方
magicpod
0
160
業務時間外もAIに働いてもらう話
colorful12
3
10k
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
3
1k
From 6 People Classroom Meetup to 100 People Regional Conference / FOSS4G Hiroshima 2026
furukawayasuto
0
110
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
450
片田舎のおっさん、 Swift Buildのダイアモンド問題解決の不具合修正PRを出すが、解決方法がキャッシュをしないようにすることであり、ビルド時間が伸びると言われてマージされないので高速化もする/swiftbuild
yimajo
0
360
Go 1.27からのGODEBUG / Go 1.27 リリースパーティ #go127party
mazrean
0
320
Go を使い始めて 2 ヶ月の学び / My first two months with Go
contour_gara
0
420
Hello, Hiroshima Geospatial Data! — Exploring DoboX with Python
ra0kley
0
170
MySQLとPostgreSQLって何が違うの?
akagami
PRO
0
170
Foundry Localでエージェント開発
seosoft
0
140
Swift愛好会と私(ウホーイ) / Swift Fan Club and Uhooi
uhooi
0
140
Featured
See All Featured
Building Adaptive Systems
keathley
44
3.2k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
A designer walks into a library…
pauljervisheath
211
25k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
370
Deep Space Network (abreviated)
tonyrice
0
290
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
810
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.7k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.5k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
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 の単位 単位ベクトル、正規化とか出てくるはず… 多次元とか感覚的には理解できないけど、ちゃ んと計算出来るのは数学スゲー