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
「うまく言えない」検索を叶える ― OpenSearchと生成AIで作る 類似プロジェクト検索
Search
Serverless Operations
February 15, 2026
99
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
「うまく言えない」検索を叶える ― OpenSearchと生成AIで作る 類似プロジェクト検索
Serverless Operations
February 15, 2026
More Decks by Serverless Operations
See All by Serverless Operations
2026年、知っておくべき最新 サーバレスTips10選/serverless-10-tips
slsops
13
5.9k
2026年、サーバーレスの現在地 -「制約と戦う技術」から「当たり前の実行基盤」へ- /serverless2026
slsops
3
660
Lambdalithアーキテクチャにより大きく進化するWeb APIの世界/lambdalith
slsops
5
1.4k
ITベンダーから見る内製化支援の本質/in-house-dev
slsops
1
900
Case Study for Repurposing Video Content With Generative AI / AWS Community Day Taiwan 2024
slsops
0
560
サーバーレスなユーザー認証認可の考慮事項と実践的プラクティス紹介 / slsdays-tokyo-2024
slsops
11
4.7k
サーバーレスで負荷試験を行う必要性と実践的プラクティスの紹介/slsdays-tokyo-2023
slsops
4
3k
Serverless Web Hosting Strategy For Modern Front-end Application
slsops
0
540
定期料金と従量課金を組み合わせたサブ スクリプション型サービスを作る/jp-stripe-02
slsops
0
640
Featured
See All Featured
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
520
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Mobile First: as difficult as doing things right
swwweet
225
10k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
GraphQLとの向き合い方2022年版
quramy
50
15k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
The Cost Of JavaScript in 2023
addyosmani
55
10k
The browser strikes back
jonoalderson
0
1.7k
Transcript
ʮ͏·͘ݴ͑ͳ͍ʯݕࡧΛ͑Δ ― OpenSearchͱੜAIͰ࡞Δ ྨࣅϓϩδΣΫτݕࡧ 4FSWFSMFTT0QFSBUJPOT 4POV,JN
ࣗݾհ ۚɹઋ༏4POV,JN $00BU4FSWFSMFTT0QFSBUJPOT *OD 'VMMTUBDL"844FSWFSMFTT&OHJOFFS "84$PNNVOJUZ#VJMEFST 4FSWFSMFTT+1͓Αͼ άϩʔόϧ"84ίϛϡχςΟͰ׆ಈத
Ϗδωε՝ ʮ͋ΔϓϩδΣΫτͱࣅ͍ͯΔผͷϓϩδΣΫτΛݟ͚ͭΔʯۀͷলྗԽ طଘۀγεςϜͷݕࡧػೳෳࡶͳϑΟϧλʔΛࣄࡉ͔͘ઃఆ͠ͳ͚ΕͳΒͣɺ γεςϜػೳ͚ͩͰർ࿑ײ͕૿͢͜ͱͰۀ͕ԆؾຯʹͳΓɺਓฉ͘աఔ͕ෆՄܽ طଘۀγεςϜͷݕࡧػೳͰɺ ଟ͘ͷ߲ʹରͯ͠ΩʔϫʔυΛ ೖྗඞཁ
ͳͥɺࣅ͍ͯΔผͷϓϩδΣΫτΛݟ͚ͭΔඞཁ͕͋Δ͔ʁ "ϓϩδΣΫτ ɾ໘ੵɿ ᶷ ɾඅ༻ɿԯԁ ɾظؒɿ ɾಛᶃ ݸ͕ࣨଟ͘ɺಛघͳઃඋͱஅ ɾಛᶄ ਖ਼໘ʹಓ࿏͕͋Γɺଞࣼ
#ϓϩδΣΫτ $ϓϩδΣΫτ %ϓϩδΣΫτ ઃඋͷઃஔཁྖ ɾಛੑ֬ೝ ೖࡳʹඞཁͳॻྨɾखଓ͖ɺ ৹ࠪཁྖɾཁ݅Λ֬ೝ ಛघͳܗɾಛੑʹΑΔ ࢿࡐௐୡํ๏Λݕ౼
ΞΠσΟΞ σʔλΛجװγεςϜ%#͔Βநग़ɺ0QFO4FBSDIΠϯσοΫε࡞ ࣗવݴޠΛؚΉ֤σʔλ߲ͷϕΫτϧԽɺྨࣅݕࡧʢϕΫτϧݕࡧʣΛ࣮ ֤߲ผʹείΞϦϯάΛద༻͠ɺ্Ґͷݕࡧ݁ՌΛྨࣅϓϩδΣΫτͯ͠ Ϛονϯάɺ6*ग़ྗ ࣄ%# &NCFEEJOH .PEFM 0QFO4FBSDI ݕࡧ
ʮ͏·͘ݴ͑ͳ͍ʯ͍͋·͍ͳݕࡧ݅Λө͢Δํ๏ ਓʹΑͬͯɺঢ়گʹΑͬͯมΘͬͯ͘Δʮࣅ͍ͯΔʯΛݕࡧ݁Ռʹө͢Δ͜ͱ͕ཁ݅ ظؒΛͽͬͨΓ͋Δ࣌ͱܾͯ͠ΊΔͷͰͳ͘ɺʮͦͷลʯͱͯ͠ద༻͍ͨ͠ ࣗવݴޠʹهࡌ͞Ε͍ͯΔ͋ΔಛੑΛ࠷༏ઌͱ͠ɺ໘ੵɾඅ༻Λ࣍ͷ༏ઌॱҐͱͯ͠ద༻͍ͨ͠ ˞໘ੵɾඅ༻ͷ࠷େɾ࠷খΛࢦఆͤͣᐆດͳঢ়ଶͰݕࡧͰ͖ΔΑ͏ʹ͍ͨ͠ ͦͷଞɺݟ͚͍ͭͨϓϩδΣΫτͷ͕݅ʮ͏·͘ݴ͑ͳ͍ʯ߹ طଘγεςϜͰͷϑΟϧλʔઃఆͰͷݕࡧମݧΛ ৽γεςϜͰΑΓศརͳܗͰ࣮ݱ͢Δํ๏ͱɾɾʁ
ʮ͍͋·͍͞ʯʹରԠ͢ΔͨΊͷઓུ "ϓϩδΣΫτ ɾ໘ੵɿ ᶷ ɾඅ༻ɿԯԁ ɾظؒɿ ɾྃɿ݄ ɾಛᶃ ݸ͕ࣨଟ͘ɺಛघͳઃඋͱஅ ɾಛᶄ
ਖ਼໘ʹಓ࿏͕͋Γɺଞࣼ ᶃᐆດ͞ΛߏԽ͠ɺ ࣮ʹམͱ͠ࠐΊΔܗ ۩ମԽ ˞Ճॏׂ߹ͷ߹ܭ͕ ʹͳΔΑ͏ʹઃఆͯ͠ݕࡧ ᶄݕࡧ݁ՌෳͷϓϩδΣΫτ͕ ҰͰݟ͑ΔΑ͏ʹఏڙ͢Δ #ϓϩδΣΫτ 50% 25% 25% 0% 0% ໘ੵ අ༻ ಛ ྃ ֊ ɾ໘ੵɿ ᶷ ɾඅ༻ɿԯԁ ɾྃɿ݄ ɾಛ ओཁൖೖܦ࿏͕શͯࣼ $ϓϩδΣΫτ ɾ໘ੵɿ ᶷ ɾඅ༻ɿԯԁ ɾྃɿ݄ ɾಛ ਖ਼໘͔ΒͷԼΓࡔʹҙ %ϓϩδΣΫτ ɾ໘ੵɿ ᶷ ɾඅ༻ɿԯԁ ɾྃɿ݄ ɾಛ ͖͍͢൫ߏʹҙ ྨࣅ ྨࣅ ྨࣅ
ʮ͍͋·͍ʯͳͱॏΈ͚ͮΛద༻͢ΔGVODUJPO@TDPSF public filterAreaWithScale( origin: number, offset = 10, scale =
1000 ) { this.queryTemplate.query.bool.must.push({ function_score: { functions: [ { exp: { 'document.໘ੵ': { origin: origin, offset: offset, scale: scale, }, }, weight: weight }, ], }, }) return this } %FDBZ'VODUJPOT (BVTTJBO ڑ͕͍ۙ͘͝ͷ͕΄΅ຬɺΕΔ΄Ͳٸݮ &YQPOFOUJBM ڑͷ૿ՃʹͭΕͯҰఆͷׂ߹Ͱܧଓతʹݮগ -JOFBS ڑʹൺྫͯ͠ઢతʹείΞ͕ݮগ
ʮ͍͋·͍ʯͳͱॏΈ͚ͮΛద༻͢ΔGVODUJPO@TDPSF public filterAreaWithScale( origin: number, offset = 10, scale =
1000 ) { this.queryTemplate.query.bool.must.push({ function_score: { functions: [ { exp: { 'document.໘ੵ': { origin: origin, offset: offset, scale: scale, }, }, weight: weight }, ], }, }) return this } // ʮྨࣅʯΛө͢ΔͨΊͷϝιου // ࣄબޙɺεϥΠμʔͷॳظϩδοΫʹج͍ͮͯ // offset ͱ scale Λө͠·͢ // origin : ൺֱͷج४ͱͳΔ // offset : ج४ͱͷ͕ࠩ͜ͷҎͷ߹ɺείΞ͕ຬʢ1ʣͱΈͳ͞ΕΔൣғ // scale : ج४ͱͷ͕ࠩ scale Λ͑Δ߹ɺείΞʹө͞Εͳ͍ const searchQuery = new SearchQueryHelper() .setPageNumber(1) .setPageSize(25) .filterAreaWithScale(origin, offset, scale) .filterCostWithScale(origin, offset, scale) .filterPeriodWithScale(origin, offset, scale) .filterDeliveryDateWithScale(origin, offset, scale) .setSearchTextVector('ಛ', inputTextEmbedding.vector)
ࣗવݴޠͰϓϩδΣΫτͷಛΛݕࡧͰ͖ΔΑ͏ʹͳΔ·Ͱ ਖ਼نԽ͞Εͨ%#நग़σʔλҎ֎ͷݟੵॻɺܭըॻɺٞࣄɺͦͷଞ֤छࢿྉͳͲɺ ςΩετؚ͕·Ε͍ͯͳ͍εΩϟϯ1%'Λݕࡧ݁Ռʹө͢Δํ๏ ສ݅Λ͑ΔϓϩδΣΫτͷಛΛࣗવݴޠͰཧ͠ɺ ςΩετ͓ΑͼྨࣅݕࡧΛ࣮͢Δํ๏ɾɾʁ
લॲཧ͕ՄೳͳશͯͷछྨͷσʔλΛΑΓࠐΈɺߏԽ͢Δ | code | name | area | cost |
period | deliveryDate | |------|-----------|------|------------|--------|--------------| | 0001 | A project | 2000 | 1000000000 | 365 | 2023-01-01 | | 0002 | B project | 2000 | 1000000000 | 365 | 2023-01-02 | | 0003 | C project | 2000 | 1000000000 | 365 | 2023-01-03 | root/ ɹᵋ 0001/ ɹ ├ ܖɾਪਐ४උ/ ├ ૯߹ܭըॻ.pdf └ ܖॻ.pdf ├ ٞࣄ/ └ ͦͷଞ ... ϓϩδΣΫτ %# ϓϩδΣΫτ ؔ࿈ࢿྉ ɾॻྨ { "meta": { "code": "0001", "name": "A project" }, "document": { "area": 2000, "cost": 1000000000, "period": 1000000000, "startDate": "2022-01-01", "deliveryDate": 2023-01-01, "type": "GENERAL", "status": "DONE" }, "embeddings": [ { "vector": [ ... ], "text": { "key": "ಛᶃ", "value": "ݸ͕ࣨଟ͘ɺಛघͳઃඋͱஅ..." } }, { "vector": [ ... ], "text": { "key": "ಛᶄ", "value": "ਖ਼໘ʹಓ࿏͕͋Γɺଞࣼ..." } } ] } σʔλͳͲઈରͰදݱͰ͖Δ߲ Ϛελʔ%#͔Β&5-ॲཧ ྨࣅݕࡧʹඞཁͳ ߏԽσʔλੜ
ϓϩδΣΫτؒͷྨࣅɾಛΛݟ͚ͭΔͨΊͷج४Λཧ root/ ɹᵋ 0001/ ɹ ├ ܖɾਪਐ४උ/ ├ ૯߹ܭըॻ.pdf └
ܖॻ.pdf ├ ٞࣄ/ └ ͦͷଞ ... { "embeddings": [ { "vector": [ ... ], "text": { "key": "ಛᶃ", "value": "ݸ͕ࣨଟ͘ɺಛघͳઃඋͱஅ..." } }, { "vector": [ ... ], "text": { "key": "ಛᶄ", "value": "ਖ਼໘ʹಓ࿏͕͋Γɺଞࣼ..." } } ] } ϓϩδΣΫτ ؔ࿈ ࢿྉɾॻྨ 0$3ରԠͷ7-.ͰಡΈऔΓ ֤߲ʹؔ͢ΔධՁͱαϚϦʔΛ࡞ Ҭɾཧతཁ݅ ɾ൫ɺߦɺؾީ ґཔओʹؔ͢Δࣄ߲ ɾاۀಛੑɺ༷ ֎؍ɾҙঊతಛ ɾ֎นɺృɺ نʹؔ͢Δৄࡉ ɾ༧ࢉɺ໘ੵɺ֊ ઃඋʹؔ͢Δಛ ɾ֤छઃඋɺӄѹࣨ ߏతཁ݅ ɾ๏ɺ໔ɺ
ࣗવݴޠσʔλͷϋΠϒϦουݕࡧ { embeddings: [ { text: { key: "Ҭɾཧతཁ݅", value:
"..." }, vector: [...] }, { text: { key: "ઃඋʹؔ͢Δಛ", value: "..." }, vector: [...] }, ] } { query: { hybrid: { queries: [ { // ςΩετݕࡧΫΤϦʔ multi_match: { query: SEARCH_TEXT, fields: ["key", "value"] } }, { // ྨࣅݕࡧΫΤϦʔ knn: { embeddings: { vector: [...] } } } ] } }, search_pipeline: { phase_results_processors: [ { 'normalization-processor': { normalization: { technique: "min_max" }, combination: { technique: "arithmetic_mean", parameters: { // είΞϦϯάॏΈ͚ͮ // [text, vector] weights: [0.3, 0.7] } }, ignore_failure: false } } ] }
σʔλߏԽॲཧߏͷ֓ཁ ϓϩδΣΫτ %# ϓϩδΣΫτ ؔ࿈ ࢿྉɾॻྨ .PEFMT 4UPSBHF &5- 4USVDUVSJOH
0QFO4FBSDI $47࿈ܞ όονॲཧ ϑΝΠϧ Ξοϓϩʔυ όονॲཧ &5-͓Αͼ +40/ߏԽ 0$3 4VNNBSJ[JOH &NCFEEJOH *OEFYJOH ར༻ͨ͠ੜ"*Ϟσϧ ɾamazon.nova-[lite/pro]-* ɾamazon.titan-embedv2-[text/image]-* ɾnanonets/Nanonets-OCR-s (OSS)
-*7&%&.0 ྨࣅݕࡧΛద༻ͨ͠ΣϒΞϓϦέʔγϣϯͷϥΠϒσϞ
serverless.co.jp