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
110
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
「とりあえず動く」の先へ。 AI時代のチーム開発と内部設計/2026-slsdays
slsops
0
100
2026年、知っておくべき最新 サーバレスTips10選/serverless-10-tips
slsops
13
5.9k
2026年、サーバーレスの現在地 -「制約と戦う技術」から「当たり前の実行基盤」へ- /serverless2026
slsops
3
670
Lambdalithアーキテクチャにより大きく進化するWeb APIの世界/lambdalith
slsops
5
1.5k
ITベンダーから見る内製化支援の本質/in-house-dev
slsops
1
920
Case Study for Repurposing Video Content With Generative AI / AWS Community Day Taiwan 2024
slsops
0
580
サーバーレスなユーザー認証認可の考慮事項と実践的プラクティス紹介 / slsdays-tokyo-2024
slsops
11
4.8k
サーバーレスで負荷試験を行う必要性と実践的プラクティスの紹介/slsdays-tokyo-2023
slsops
4
3.1k
Serverless Web Hosting Strategy For Modern Front-end Application
slsops
0
550
Featured
See All Featured
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
New Earth Scene 8
popppiees
4
2.6k
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.1k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.3k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
450
For a Future-Friendly Web
brad_frost
183
10k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
30 Presentation Tips
portentint
PRO
1
410
Making the Leap to Tech Lead
cromwellryan
135
10k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
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