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
NGT-ONNGによる近似最近傍探索
Search
po3rin
May 31, 2021
Programming
0
53
NGT-ONNGによる近似最近傍探索
po3rin
May 31, 2021
Tweet
Share
More Decks by po3rin
See All by po3rin
M3におけるCI/CDパイプラインを新鮮に保つ仕組み
po3rin
0
240
Go Templateを使った フロントエンド開発を採用した 経緯と所感
po3rin
0
210
検索基盤移行時の思考
po3rin
0
4.1k
Go1.19で採用された Pattern-defeating Quicksort の紹介
po3rin
7
4.7k
Elasticsearchを負荷から守るesguard
po3rin
0
200
Sudachi×Elasticsearchへの移行と医療検索システム精度改善
po3rin
1
710
eskeeperを使ったファイル定義によるindex管理
po3rin
2
390
M3 情報検索/推薦論文輪読会 ~SIGIR祭~ (SIGIR2021: Session 6D – IR Models)
po3rin
0
62
Handling Temporal Query for Health Search with ja-timex
po3rin
3
240
Other Decks in Programming
See All in Programming
PHPの次期バージョンはこの時期どうなっているのか - Internalsの開発体制について - PHPカンファレンス小田原
youkidearitai
PRO
1
220
Ruby Pattern Matching
bkuhlmann
0
930
2 週間で Twitter Bot を作ってみた
contour_gara
0
770
はてなにおける CSS Modules、及び CSS Modules に足りないもの / CSS Modules in Hatena, and CSS Modules missing parts
mizdra
7
970
Fast JSX: Don't clone props object #28768
yossydev
1
180
Go製Webアプリケーションのエラーとの向き合い方大全、あるいはやっぱりスタックトレース欲しいやん / Kyoto.go #50
utgwkk
6
1.8k
CDKコントリビュートの最初の壁を越えよう! -簡単issueの見つけ方-
badmintoncryer
3
210
Komplexe Oberflächen mit SVG und der Web Animation API
joergneumann
0
680
AppRouter Panel Talk
yosuke_furukawa
PRO
1
460
『Railsオワコン』と言われる時代に、なぜブルーモ証券はRailsを選ぶのか
free_world21
1
360
初心者のためのRubyKaigi入門/RubyKaigi Introduction
a_matsuda
10
1.4k
Elm Form Validation
bkuhlmann
0
510
Featured
See All Featured
5 minutes of I Can Smell Your CMS
philhawksworth
199
19k
Design by the Numbers
sachag
274
18k
Rebuilding a faster, lazier Slack
samanthasiow
74
8.2k
Thoughts on Productivity
jonyablonski
60
3.9k
Fantastic passwords and where to find them - at NoRuKo
philnash
39
2.5k
Embracing the Ebb and Flow
colly
80
4.2k
GraphQLの誤解/rethinking-graphql
sonatard
55
9.3k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
51k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
242
1.2M
Atom: Resistance is Futile
akmur
260
25k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
123
39k
Statistics for Hackers
jakevdp
790
220k
Transcript
M3 ใݕࡧจಡΈձ #2 hiromu-nakamura @po3rin 3FBEJOHQBQFSl0QUJNJ[BUJPOPG*OEFYJOH#BTFEPOL /FBSFTU/FJHICPS(SBQIGPS1SPYJNJUZ4FBSDIJO)JHI EJNFOTJPOBM%BUBz /(50//(ʹΑΔۙࣅ࠷ۙ୳ࡧ
தଜ߂ ΤϜεϦʔͷ"*ɾػցֶशνʔϜͰݕࡧج൫पΓ Λ୲͍ͯ͠Δɻ(P͕͖ɻ ֤छΞΧϯτQPSJOͰͬͯ·͢ɻ )*SPNV/BLBNVSB
$POUFOUT *OUSPEVDUJPOdϕϯνϚʔΫ͔ΒݟΔ"//ͷݱঢ়d /(50//(3FMBUFE8PSL /(50//( ͓·͚
*OUSPEVDUJPO dϕϯνϚʔΫ͔ΒݟΔ"//ͷݱঢ়d
"// ߴ࣍ݩͷϕΫτϧۭؒͰσʔλͷ࠷ۙΛݕࡧ͢Δ͜ͱॏཁͳλεΫͰ͋Δɻ ը૾σʔληοτ͔Βྨࣅͨ͠ը૾Λݟ͚ͭΔ ใݕࡧͰɺςΩετຒΊࠐΈΛ༻ͯ͠ɺྨࣅهࣄΛࢀর͢Δ ಛʹਂֶशϞσϧͷ࣍ݩ૿Ճ͢Δ͕͋ΔͨΊɺඦສΛ͑Δߴ࣍ݩ ϕΫτϧΛݕࡧ͢Δඞཁ͕͋Γɺۙࣅ࠷ۙ୳ࡧ BQQSPYJNBUFOFBSFTU OFJHICPS "//
ݕࡧํ๏ओྗɻ
"// ఏҊ͞Ε͍ͯΔ࠷ۙݕࡧํ๏ଟଘࡏ IOTX GBJTT 'BDFCPPL ONTMJC લճՏ߹͞Μ͕༻
qBOO 0QFO$7Ͱ࣮͞Ε͍ͯΔ &UDʜ ࠷ۙ୳ࡧͷϕϯνϚʔΫΛߦ͏ϓϩδΣΫτʮ#FODINBSLJOHOFBSFTUOFJHICPSTʯ <>Ͱ֤ख๏ΛλεΫ͝ͱʹൺֱՄೳɻ <>IUUQTHJUIVCDPNFSJLCFSOBOOCFODINBSLT
"// ͳʹΒ:BIPP+"1"/ΒʹΑͬͯ/(5ͱ͍͏ͷ͕ੈքτοϓϨϕϧୡͨ͠Β͍͠<> <>IUUQTUFDICMPHZBIPPDPKQFOUSZ
#FODINBSLJOHOFBSFTUOFJHICPST <>IUUQTHJUIVCDPNFSJLCFSOBOOCFODINBSLT
#FODINBSLJOHOFBSFTUOFJHICPST <>IUUQTHJUIVCDPNFSJLCFSOBOOCFODINBSLT
IUUQTBSYJWPSHBCT Αͬͯࠓճͷจ /(5 /FJHICPSIPPEHSBQIBOEUSFF ͷจ
/(50//(3FMBUFE8PSL d/(50//(ొ·ͰͷܦҢΛ͓͑͞Δd
3FMBUFE8PSL ࠷ۙ୳ࡧɺπϦʔϕʔεͱάϥϑϕʔεʹେ͖͘ྨ͞ΕΔɻଠࣈ/(5ʹ࣮͞Ε͍ͯΔΞϧΰϦζϜɻ ˙πϦʔϕʔε LEUSFF "// LEπϦʔʹۙࣅݕࡧΛద༻͢Δํ๏ '-"// ෳͷLEπϦʔ͕ฒߦͯ͠ݕࡧ͞ΕΔϥϯμϜԽ͞ΕͨLEπϦʔ
˙άϥϑϕʔε )/48 ۙࣅۙάϥϑʹϨΠϠʔͷ֓೦Λಋೖ "//( ۙࣅ,//( 1"//( ΫΤϦ࣌ؒΛॖ͢ΔͨΊʹ"//(ͷ֤ϊʔυͷΤοδΛআ͢Δ 0//( ϕϯνϚʔΫτοϓϨϕϧ
"//( ϊʔυʹLݸͷ࠷ۙϊʔυͷ࿈Λߦ͏άϥϑɻ ࿈݁άϥϑΛอূ͠ͳ͍ͷͰ͞Εͨάϥϑ͕ൃੜ͢Δ ਤ ɻ L//( "//(<>ϊʔυͣͭແΤοδͰஞ࣍తʹ࿈݁͢Δ͜ͱͰ࿈݁άϥϑΛอূ͢Δ ਤ ɻ "//(
<>IUUQTTZJNHKQJEPDTSFTFBSDI@MBCBSUJDMFTNJXBTBLJJQTKUPEQEG
"//(5 ϥϯμϜʹબͨ͠ϊʔυ͔ΒάϥϑΛ୳ࡧ͢ΔͷͰάϥϑ͕େྔͷϊʔυΛ༗͢Δ ߹ʹ୳ࡧίετ͕૿Ճ͢Δɻಛʹ୳ࡧى࣍ୈͰίετ͕Ͷ্͕Δɻ "//(5<>"//(ʹ͓͍ͯ୳ࡧىΛܾఆ͢ΔͷʹEWQUSFF<>Λར༻͢Δ͜ͱʹ ΑΓίετͰۙϊʔυΛ୳ࡧͰ͖Δ ਤ ɻ "//( <>IUUQTTZJNHKQJEPDTSFTFBSDI@MBCBSUJDMFTNJXBTBLJJQTKKOMQEG
"//(5
"//(5 EWQUSFF EZOBNJDWBOUBHFQPJOUUSFF ୳ࡧىΛબͿͨΊ͚ͩʹΘΕΔɻ͜ͷྫͰۭؒશମΛͷಉ ৺ԁɺΦϨϯδͷಉ৺ԁɺ੨ͷಉ৺ԁʹΑΓॱʹׂ͢Δ͜ͱͰ෦ۭؒࡉԽ͠ɺͦͷ෦ۭؒͷแؚؔ Λࣔ͢πϦʔߏΛੜ͢Δɻ͜ΕͰ୳ࡧىΛେ෯ʹߜΓࠐΊΔɻಈతͷߏஙΞϧΰϦζϜޙௐࠪʜ
/(50//( d/(50//(ʹΑΔΤοδௐd
.PUJWBUJPO "//( "//(5ͰΤοδʹΑͬͯ࣍ͷ͕ൃੜ͢Δɻ ೖྗΤοδ͕ۃʹগͳ͍ϊʔυ౸ୡ͢Δ͕֬Լ͕ΔͷͰݕࡧ࿙Ε͢ΔՄೳ Τοδ͕શମతʹগͳ͍ͱԕճΓʹͳΔՄೳੑ͕͋Γɺݕࡧ࿙Ε͢ΔՄೳੑ্͕͕Δ Τοδ͕ଟ͍ͱ୳ࡧ͕࣌ؒ૿͑Δɻ ͭ·Γ ೖྗΤοδͷϊʔυͰҰఆʹ͍ͨ͠ ग़ྗΤοδͷ૿ՃʹΑΔԼ͕ൃੜ͠ͳ͍ൣғͰ֤ϊʔυͷೖྗΤοδΛ૿͢ɻ ͜ΕΒΛϊʔυʹΤοδͷௐʹΑͬͯղܾ͢Δͷ͕/(50//(
0QUJNJ[FE/FBSFTU /FJHICPST(SBQI Ͱ͋Γɺ"//(5ʹΤοδௐύεௐΛ͔͚ͨͷͰ͋Δɻ
EFHSFFBEKVTUNFOUNFUIPET QBUIBEKVTUNFOUNFUIPE /(50//(ͰͭΤοδௐ๏ͱݕࡧ࣌ͷύεௐ๏ΛఏҊ͍ͯ͠Δɻ ੩త࣍ௐ,//(ͷΤοδͱసΤοδ͔Β࡞ͬͨάϥϑͰೖग़࣍Λେ·͔ʹௐ͢Δ ੍͖੩త࣍ௐೖग़࣍ΛΑΓਖ਼֬ʹௐ͢Δ ಈత࣍ௐݕࡧ࣌ʹཁٻ͞ΕΔਫ਼͔Βग़࣍Λಈతʹܾఆ͢Δ γϣʔτΧοτΤοδআڈʹΑΔύεௐ ϊʔυͷग़͕࣍ߴ͘ͳΓɺΫΤϦ͕࣌ؒ͘ͳΔͷΛͳΜͱ͔͍ͨ͠
੩త࣍ௐ d,//(ͷΤοδͱసΤοδ͔Β࡞ͬͨάϥϑͰೖग़࣍Λେ·͔ʹௐd ·ͣϊʔυͷೖग़࣍Λେࡶʹἧ͍͑ͨ F@P F@J͕༩͑ΒΕͨ࣌ɺ֤ϊʔυ͔Βڑ͕͍ॱʹ F@Pݸͷग़ྗΤοδ͕બ͞ΕΔɻF@Jݸͷग़ྗΤοδ ͍ॱʹબ͞ΕΔɻ બΕͨF@Pݸͷग़ྗΤοδ܈ͦͷ··࠾༻͠ɺF@J ݸͷग़ྗΤοδ܈શͯసͯ͠ೖྗΤοδͱͯ͠࠾ ༻͢Δɻ
ࠨਤL F@P F@Jͷ࣌Λࣔ͢ɻେ·͔ʹFP FJʹ͕࣍ἧ͑ΒΕ͍ͯΔɻ จͰ͜ΕΛௐάϥϑͱ໋໊͍ͯ͠Δɻ ௐ ݸͷΤοδ eo ݸͷసΤοδ ei
੍͖࣍ௐ தଜ͕·ͩཧղͰ͖ͯͳ͍આ dೖग़࣍ΛΑΓਖ਼֬ʹௐ͢ΔͨΊͷ੍͖ͷ࣍ௐd ઌ΄Ͳͷํ๏ͩͱେࡶʹ࣍ΛௐͰ͖Δ͕ɺҰ෦ͷϊʔυߴ ͍ग़࣍Λ͕࣋ͭ͋Δɻͦ͜Ͱɺग़ࣗΛ૿͞ͳ͍Α͏ʹೖ ग़࣍Λௐ͢Δํ๏͕ՃͰఏҊ͞Ε͍ͯΔɻ ઌ΄ͲͷΞϧΰϦζϜͰF@PͰੜ͞ΕΔௐάϥϑ(@UΛੜ ͢Δɻ(@JΛߏஙதͷάϥϑ(@Fͷసஔάϥϑͱ͢Δɻ (@Uͷϊʔυͷग़࣍ͷঢॱͰͭͷϊʔυ͕બ͞Εɺͦͷ
ϊʔυͷྡϊʔυͷ͍ۙॱͦΕͧΕʹ͍ͭͯɺ(@Jͷྡϊʔυ ͷग़͕࣍F@JΑΓ͘ɺ(@Fͷϊʔυͷग़͕࣍F@PΑΓ͍ ߹ɺྡϊʔυͱͷΤοδ͕(@FʹՃ͞ΕΔɻ (@FϊʔυʹF@PݸͷΤοδؚ͕·ΕΔ·ͰɺݩͷάϥϑͷΤοδ ͕ϊʔυʹՃ͞Ε·͢ɻ
ௐ Gt Ge Gi Gt Ge Gi F@J F@P L
Ge TUBHF݁Ռ ˔ ˔ ˔ ࠷ޙͷϊʔυ·Ͱॲཧ ੍ݶ͖੩త࣍ௐTUBHF ඞͣ͠࿈άϥϑʹͳΒͳ͍ʁ
Ge Ge G 4UBHF ੍ݶ͖੩త࣍ௐTUBHF F@J F@P L ඞͣ͠࿈άϥϑʹͳΒͳ͍ʁΜʁʁ ࠓޙཁௐࠪ
γϣʔτΧοτΤοδআڈʹΑΔ ύεௐ EWQUSFFΛ༻ͯ͠ΫΤϦʹ΄΅ྡ͢ΔϊʔυΛ୳ ࡧىͱ͍ͯ͠ΔͨΊɺγϣʔτΧοτΤοδແବ ʹग़࣍Λ૿͍ͯ͠Δ߹͕͋Δɻ ͜ͷΑ͏ͳΤοδΛআ͢ΔͱΫΤϦ࣌ؒΛॖͰ͖ Δɻ ସύε͕ͭҎ্ͷϊʔυͰߏ͞Ε͍ͯΔ߹ ࠨ ਤB
Λআ͠Α͏ͱ͢ΔͱΫΤϦ࣌ؒͷํ͕େ͖͘ͳ ΔͨΊͭͷϊʔυͰߏ͞Ε͍ͯΔύεͷΈ͕আ͞ ΕΔ ࠨਤCͷ߹ ɻ γϣʔτΧοτΤοδ͕ସύεͷΤοδΑΓ͍ ߹ ࠨਤD ͷΑ͏ͳ߹আ͞Εͳ͍ɻ
ಈత࣍ௐ dݕࡧ࣌ʹཁٻ͞ΕΔਫ਼͔Βग़࣍Λಈతʹܾఆ͢Δd ߴਫ਼͕ඞཁͳ߹ߴ͍ग़͕࣍ඞཁɻҰํͰ ͕༏ઌ͞ΕΔ߹ߴ͍ग़࣍ෆཁɻ͕ͨͬͯ͠ɺ ग़࣍ݕࡧ࣌ʹಈతʹௐͰ͖Δͱخ͍͠ɻ ୳ࡧ࣌ʹߟྀ͢Δग़࣍ਫ਼ௐύϥϝʔλЏͷؔ Ͱ͋ΔFQΛೖྗͱͯ͠ௐ͢Δɻ ਫ਼ௐύϥϝʔλͷЏ୳ࡧܘʹӨڹΛ༩͑ Δɻͭ·Γ,OO4FBSDIͷਫ਼Λೋͭͷ؍Ͱܾఆ͢ Δɻ
74NFUIPET %"͕࠷ڑܭࢉ͕গͳ͘ࡁΉɻ σʔληοτʹΑͬͯ4"Ͱ͑͞΄΅࠷ྑͷάϥϑߏΛߏஙͰ͖Δɻ 4"$ɺ(*45ͷΑ͏ͳߴ࣍ݩͷσʔληοτʹޮՌత͔͠Εͳ͍ɻ 4"ͱ4"$ͷ࣍%"ͷ࣍ΑΓগͳ͍ͨΊϝϞϦ༻ྔͷݮΛ༏ઌ͢Δඞཁ͕͋Δ߹ɺ4"·ͨ 4"$͕બࢶͱͳΔɾ
3FTVMUT σʔληοτ͝ͱͷ֤छ࠷ۙ୳ࡧख๏ൺֱ
ग़࣍ΛݮΒ͢ɻೖ࣍Ұఆʹ͢ΔΤοδௐͱ͍͏ΞΠσΞ໘ന͍ɻ ͨͩಈతͳߋ৽ɺআΛߟྀͯ͠ͳ͍ͷͰɺΞϓϦέʔγϣϯͰ͏ͷෆ ͖ɻ੩తͳݕࡧʹ͑Δ͚Ͳͦ͏ͳΔͱ͍Ͳ͜Ζ͕ɻɻ 7BME/(50//(αϙʔτ͠ͳ͍ͱݴ͍ͬͯΔɻͦΓΌͦ͏ɻ Γੈ)/48࣌ͳͷ͔ ॴײ
͓·͚ͱิ
<>IUUQTHJUIVCDPNWEBBTWBME 7BME<>/(5ϥΠϒϥϦΛͬͨࢄϕΫτϧݕࡧΤϯδϯɻLTGSJFOEMZͰɺ )FMNͰҰܸͰσϓϩΠ͕Մೳɻ௨৴H31$Λ͍ͬͯΔɻ͔͠(PΧοέΣɻ ΫϥΠΞϯτϥΠϒϥϦఏڙ͞Ε͓ͯΓ1ZUIPO (P /PEFKTͳͲʹରԠ͍ͯ͠Δɻ
ͨͩ7BMEͩͱ/(5"0//(͔͠ରԠͯ͠ͳ͍͍͘͞ɻɻɻ ࠶ߏஙͱࢄΤϯδϯ͕ͦ͠͏ͩ͠ɻɻɻ OHUίϚϯυΤοδௐܥΞϧΰϦζϜ໌ࣔతʹ࠶ߏஙΛୟ͘ܗࣜʹͳ͍ͬͯΔɻ ϕϯνϚʔΫݟΔͱΤοδௐ͕ಈతʹͰ͖ͳ͍ͱ·ͩ)/48ܥʹ܉ഋ্͕͕Γͦ͏ɻ
ͻΌʔʔʔ
͓·͚ େ·͔ͳ੩తͳ࣍ௐํ๏ͷग़ॴ ͳͥ͜ͷΞΠσΞ͕ग़ͯ͘Δ͔ɻ
͓·͚ σʔληοτ͝ͱͷग़࣍ͷฏۉ
શͯΛաڈʹ͢Δ4DB//