Практичні нотатки: семантичний пошук проти векторного пошуку: у чому різниця, та
Покрокове керівництво з практичних нотаток: семантичний пошук проти векторного пошуку: у чому різниця, а також контракти, перевірки та слоти для коду для команд, які впроваджують цю схему.
У цьому посібнику детально описано шлях від сировини до функціональної системи для теми: «Семантичний пошук проти векторного пошуку: у чому різниця та яке їхнє місце в RAG?». Основна увага приділяється конкретним крокам виконання, чітким перевіркам та коду, який можна без проблем додати до репозиторію, не здогадуючись про мету. На етапі огляду необхідно визначити вхідні дані, виконавця кроку та критерії завершення перед зміною коду. Оператори повинні мати можливість перезапустити крок з відомої точки контролю, не намагаючись здогадатися про прихований стан. Краще використовувати невеликі, перевірювані одиниці коду замість об’ємних скриптів. Якщо крок зазнає невдачі, причина має вказувати на конкретну відповідальність, а не на заплутану послідовність операцій.
1. Почніть з найпростішої моделі мислення
Під час роботи на етапі «1. Почніть з…» спочатку запишіть умови контракту: необхідні вхідні дані, сигнал про успіх та те, що відбувається у разі часткової невдачі. Такий перелік допомагає зберігати чесність пізніших змін у коді. Розглядайте цей етап як контракт між вхідними даними та перевіреними результатами. Дайте назви кожним елементам, визначте критерії успіху та не допускайте безповідомного часткового виконання завдань. Зберігайте у кеші стабільні інструкції системи та схеми інструментів. Повторна передача ідентичних даних є поширеною причиною витрат ресурсів.
Пошук за ключовими словами
Під час роботи на етапі пошуку за ключовими словами спочатку запишіть умови контракту: необхідні вхідні дані, сигнал про успіх та те, що відбувається у разі часткової невдачі. Такий перелік допомагає зберігати чесність пізніших змін у коді. Запишіть час виконання та витрати на токени або запити поруч із функціональними результатами. Чітке бачення витрат заздалегідь запобігає несподіваним рахункам, коли система переходить від демо-режиму до спільних середовищ. Вимірюйте рівень відтворення інформації на фіксованому наборі запитань перед налаштуванням формулювань запитів. Часта зміна формулювань рідко допомагає покращити ефективність пошуку.
Векторний пошук
Під час роботи над етапом векторного пошуку спочатку запишіть контракт: необхідні вхідні дані, сигнал про успіх та те, що відбувається при частковій невдачі. Цей перелік допомагає зберігати чесність подальших змін у коді. Зберігайте конфігурацію окремо від коду додатку. Файли середовища, сховища секретних даних та флаги функцій мають знаходитися в одному місці, де оператори можуть їх перевіряти, не читаючи весь код. Вимірюйте рівень відтворення результатів на фіксованому наборі запитань перед налаштуванням формулювань запитів. Часта зміна формулювань рідко виправляє слабкі алгоритми пошуку. Під час роботи над етапом векторного пошуку спочатку запишіть контракт: необхідні вхідні дані, сигнал про успіх та те, що відбувається при частковій невдачі. Цей перелік допомагає зберігати чесність подальших змін у коді. Віддавайте перевагу малим, тестованим одиницям коду перед величезними скриптами. Коли якийсь крок зазнає невдачі, причина має вказувати на конкретну відповідальність, а не на заплутану послідовність операцій.
Семантичний пошук
Етап семантичного пошуку працює найкраще, коли його розглядають як вимірювану поверхню. Зафіксуйте один ідеальний результат, один випадок невдачі та примітку про скасування змін перед розширенням обсягу роботи. Розглядайте цей етап як контракт між вхідними даними та перевіреними результатами. Позначте всі елементи, визначте критерії успіху та не допускайте мовчазного часткового виконання завдань. Розділіть політику часткового оброблення даних від політики їх пошуку. Зміна однієї з них не повинна змушувати переписувати іншу при зміні показників якості.
Keyword Search
↓
Match words
Vector Search
↓
Match embedding similaritySemantic Search
↓
Match meaning / relevance
2. Що таке пошук за ключовими словами?
Етап „Що таке ключове слово“ функціонує найкраще, якщо його розглядати як вимірювану характеристику. Збережіть один ідеальний запис, один випадок невдачі та примітку про скасування змін перед розширенням обсягу роботи. Записуйте час виконання та витрати на токени чи запити поруч із функціональними результатами. Візуалізація витрат заздалегідь запобігає несподіваним рахункам під час переходу від демо-середовища до спільних середовищ. Розділяйте політику часткової обробки даних та політику їх пошуку. Зміна однієї з них не повинна змушувати переписувати іншу при зміні показників якості.
annual
leave
days
employees
Де пошук за ключовими словами працює дуже добре
Механізм пошуку за ключовими словами „Where“ працює найкраще, коли його розглядають як вимірювану поверхню. Збережіть один ідеальний запис, один випадок збою та примітку про скасування змін перед розширенням обсягу роботи. Тримайте конфігурацію окремо від коду додатку. Файли середовища, сховища конфіденційних даних та флаги функцій мають знаходитися в одному місці, де оператори можуть їх перевіряти, не читаючи весь код. Розділяйте політику поділу на частини та політику отримання даних. Зміна однієї з них не повинна змушувати переписувати іншу, коли змінюються показники якості. Механізм пошуку за ключовими словами „Where“ працює найкраще, коли його розглядають як вимірювану поверхню. Збережіть один ідеальний запис, один випадок збою та примітку про скасування змін перед розширенням обсягу роботи. Віддавайте перевагу невеликим, тестованим одиницям коду перед величезними скриптами. Коли якийсь крок зазнає невдачі, причина має вказувати на конкретну відповідальність, а не на заплутану послідовність операцій.
INC-10996
PROD-12345
LAPTOP-XPS-15
HTTP 401
API-OrderService
3. Обмеження пошуку за ключовими словами
На цьому етапі «Обмеження» необхідно визначити вхідні дані, виконавця кроку та критерії завершення перед зміною коду. Оператори повинні мати можливість перезапустити крок з відомої точки контролю, не намагаючись вгадати прихований стан. Розглядайте цей етап як контракт між вхідними даними та перевіреними результатами. Позначте всі елементи, визначте критерії успіху та не допускайте мовчазного часткового завершення. Наводьте конкретні уривки, які лежать в основі відповіді. Без посилань оператори не зможуть відрізнити галюцинацію від проблем із індексуванням.
annual leave
vacation time
4. Що таке пошук векторів?
На етапі „4. Що таке вектор“ необхідно визначити вхідні дані, відповідальну особу за крок та критерії завершення перед зміною коду. Оператори повинні мати можливість перезапустити крок з відомої точки контролю, не намагаючись визначити прихований стан. Записуйте час виконання та витрати на токени чи запити поруч із функціональними результатами. Чітке відображення витрат заздалегідь запобігає несподіваним рахункам під час переходу з демо-середовища у спільні середовища. Наводьте конкретні уривки, які лягли в основу відповіді. Без посилань оператори не зможуть відрізнити галюцинації від проблем з індексуванням.
"Employees are entitled to 20 days of annual leave."
↓
Embedding Model
↓
[0.12, -0.43, 0.78, 0.21, ...]
"How much vacation time can I take?"
↓
Embedding Model
↓
[0.15, -0.39, 0.75, 0.24, ...]
User Query
↓
Embedding
↓
Vector
↓
Compare with stored vectors
↓
Nearest / most similar vectors
↓
Relevant documents
annual leave
≈
vacation time
5. Чи є векторне пошукове забезпечення семантичним пошуком?
Для етапу 5 So Is Vector необхідно визначити вхідні дані, власника кроку та критерії завершення перед зміною коду. Оператори повинні мати можливість перезапустити крок з відомої точки контролю, не намагаючись вгадати прихований стан. Конфігурацію слід тримати окремо від коду додатку. Файли середовища, сховища конфіденційних даних та флаги функціоналу мають знаходитися в одному місці, яке оператори можуть перевірити, не читаючи весь алгоритм. Наводьте ті уривки, які фактично лежать в основі відповіді. Без посилань оператори не зможуть відрізнити галюцинацію від проблем із індексуванням. Для етапу 5 So Is Vector необхідно визначити вхідні дані, власника кроку та критерії завершення перед зміною коду. Оператори повинні мати можливість перезапустити крок з відомої точки контролю, не намагаючись вгадати прихований стан. Віддавайте перевагу невеликим, тестованим одиницям перед об’ємними скриптами. Коли крок зазнає невдачі, причина має вказувати на конкретну відповідальність, а не на заплутану систему обробки даних.
Не зовсім.
Під час роботи на етапі «Не зовсім» спочатку запишіть угоду: необхідні вхідні дані, сигнал про успіх та те, що відбувається при частковій невдачі. Цей перелік допомагає зберігати чесність пізніших змін у коді. Розглядайте цей етап як угоду між вхідними даними та перевіреними результатами. Дайте назви елементам, визначте критерії успіху та не допускайте беззвучного часткового виконання. Вимірюйте рівень запам’ятовування на фіксованому наборі запитань перед налаштуванням підказок. Часта зміна підказок рідко виправляє слабку ефективність пошуку.
Semantic Search
│
├── Vector similarity
├── Query understanding
├── Semantic relevance
├── Ranking
└── Other relevance signals
6. Векторний пошук проти семантичного ранжування
Під час роботи над 6 етапами порівняння векторного пошуку спочатку запишіть контракт: необхідні вхідні дані, сигнал про успіх та те, що відбувається при частковій невдачі. Такий перелік допомагає зберігати чесність пізніших змін у коді. Запишіть час виконання та витрати на токени або запити поруч із функціональними результатами. Відображення витрат заздалегідь запобігає несподіваним рахункам, коли система переходить від демо-версії до спільних середовищ. Вимірюйте рівень відтворення результатів на фіксованому наборі запитань перед налаштуванням формулювань запитів. Часта зміна формулювань рідко допомагає покращити ефективність пошуку.
User Query
↓
Vector Search
↓
50 candidate documents
↓
Semantic Ranking
↓
Top 5 most relevant documents
7. Що таке гібридний пошук?
Під час праці над етапом «7 Що таке гібрид» спочатку запишіть умови взаємодії: необхідні вхідні дані, сигнал про успіх та те, що відбувається при частковій невдачі. Цей перелік допомагає зберігати чесність подальших змін у коді. Тримайте конфігурацію окремо від коду додатку. Файли середовища, сховища секретних даних та флаги функцій мають знаходитися в одному місці, де оператори можуть їх перевіряти, не читаючи весь код. Вимірюйте рівень точності на фіксованому наборі запитань перед налаштуванням підказок. Зміна підказок рідко вирішує проблеми слабкого пошуку інформації. Під час праці над етапом «7 Що таке гібрид» спочатку запишіть умови взаємодії: необхідні вхідні дані, сигнал про успіх та те, що відбувається при частковій невдачі. Цей перелік допомагає зберігати чесність подальших змін у коді. Віддавайте перевагу невеликим, тестованим одиницям коду перед об’ємними скриптами. Коли якийсь крок зазнає невдачі, причина має вказувати на конкретну відповідальність, а не на заплутану послідовність операцій.
Keyword Search
+
Vector Search
User Query
│
┌─────────┴─────────┐
↓ ↓
Keyword Search Vector Search
│ │
└─────────┬─────────┘
↓
Combined Results
↓
Ranking / Reranking
↓
Relevant Documents
Природна мова
Етап роботи з природною мовою працює найкраще, коли його розглядають як вимірювану поверхню. Зафіксуйте один ідеальний результат, один випадок невдачі та примітку про скасування змін перед розширенням обсягу роботи. Розглядайте цей етап як контракт між вхідними даними та перевіреними результатами. Позначте всі елементи, визначте критерії успіху та не допускайте мовчазного часткового виконання завдань. Розділіть політику розбиття на частини та політику отримання даних. Зміна однієї з них не повинна змушувати переписувати іншу при зміні показників якості.
INC-10996
Customer-1234
HTTP-500
Order-98765
8. Реальний приклад корпоративного використання
Етап 8 «Справжнє підприємство» найкраще функціонує, якщо його розглядати як вимірювану поверхню. Збережіть один ідеальний зразок роботи, один випадок невдачі та запис про скасування змін перед розширенням обсягу роботи. Записуйте час виконання та витрати на токени чи запити поруч із функціональними результатами. Чітке бачення витрат заздалегідь запобігає несподіваним рахункам під час переходу від демо-версії до спільних середовищ. Розділяйте політику часткової обробки даних та політику їх пошуку. Зміна однієї з них не повинна змушувати переписувати іншу, коли змінюються показники якості.
INC-10231
Payment gateway timeout
INC-10287
Payment service unavailableINC-10492
Database connection pool exhaustedINC-10501
Payment API latency
Пошук за ключовими словами
Етап пошуку за ключовими словами працює найкраще, коли його розглядають як вимірювану одиницю. Збережіть один ідеальний запис, один випадок збою та примітку про скасування змін перед розширенням обсягу роботи. Тримайте конфігурацію окремо від коду додатку. Файли середовища, сховища конфіденційних даних та флаги функцій мають знаходитися в одному місці, де оператори можуть їх перевіряти, не читаючи весь код. Розділяйте політику поділу на частини та політику отримання даних. Зміна однієї з них не повинна змушувати переписувати іншу, коли змінюються показники якості. Етап пошуку за ключовими словами працює найкраще, коли його розглядають як вимірювану одиницю. Збережіть один ідеальний запис, один випадок збою та примітку про скасування змін перед розширенням обсягу роботи. Віддавайте перевагу невеликим, тестованим одиницям перед величезними скриптами. Коли якийсь крок зазнає невдачі, причина має вказувати на конкретну відповідальність, а не на заплутану послідовність операцій.
payment
timeout
Векторний пошук
Для етапу векторного пошуку необхідно перед зміною коду визначити вхідні дані, відповідального за цей крок та критерії завершення. Оператори повинні мати можливість перезапустити крок з відомої точки контролю, не намагаючись вгадати прихований стан. Розглядайте цей етап як контракт між вхідними даними та перевіреними результатами. Позначте всі елементи, визначте критерії успіху та не допускайте безповідомного часткового завершення. Наводьте конкретні уривки, які лягли в основу відповіді. Без посилань оператори не зможуть відрізнити галюцинації від проблем із індексуванням.
timeout
latency
unavailable
connection problems
Гібридний пошук
На етапі гібридного пошуку необхідно визначити вхідні дані, відповідальну особу за крок та критерії завершення перед зміною коду. Оператори повинні мати можливість перезапустити крок з відомої точки контролю, не намагаючись визначити прихований стан. Записуйте час виконання та витрати на токени або запити поруч із функціональними результатами. Чітке відображення витрат заздалегідь запобігає несподіваним рахункам під час переходу від демо-середовища до спільних середовищ. Наводьте уривки тексту, які фактично лягли в основу відповіді. Без посилань оператори не зможуть відрізнити галюцинації від проблем із індексуванням.
Exact lexical relevance
+
Semantic relevance
9. Де місце Azure AI Search?
Для етапу 9 «Where Does Azure stage» необхідно визначити вхідні дані, власника кроку та критерії завершення перед зміною коду. Оператори повинні мати можливість перезапустити крок з відомої точки контролю, не намагаючись вгадати прихований стан. Конфігурацію слід тримати окремо від коду додатку. Файли середовища, сховища конфіденційних даних та флаги функцій мають знаходитися в одному місці, яке оператори можуть перевірити, не читаючи весь алгоритм. Наводьте ті уривки, які фактично лежать в основі відповіді. Без посилань оператори не зможуть відрізнити галюцинацію від проблем із індексуванням. Для етапу 9 «Where Does Azure stage» необхідно визначити вхідні дані, власника кроку та критерії завершення перед зміною коду. Оператори повинні мати можливість перезапустити крок з відомої точки контролю, не намагаючись вгадати прихований стан. Віддавайте перевагу невеликим, тестованим одиницям перед об’ємними скриптами. Коли крок зазнає невдачі, причина має вказувати на конкретну відповідальність, а не на заплутану систему обробки даних.
Azure AI Search
│
┌────────────┼────────────┐
↓ ↓ ↓
Full-text Vector Semantic
Search Search Ranking
│ │ │
↓ ↓ ↓
Keywords Embeddings Relevance
10. Де місце RAG?
Під час роботи над 10 етапами «Де місце RAG?» спочатку запишіть умови контракту: необхідні вхідні дані, сигнал про успіх та те, що відбувається у разі часткової невдачі. Цей перелік допомагає зберігати чесність пізніших змін у коді. Розглядайте цей етап як контракт між вхідними даними та перевіреними результатами. Позначте всі елементи, визначте критерії успіху та не допускайте беззвучного часткового виконання завдань. Вимірюйте рівень відтворення інформації на фіксованому наборі запитань перед налаштуванням підказок. Часта зміна підказок рідко допомагає покращити якість пошуку інформації.
User
↓
RAG System
↓
Azure AI Search
↓
Azure OpenAI
Retrieval
+
Augmentation
+
Generation
11. U RAG є два основні етапи
Під час роботи над 11 етапами RAG Has Two спочатку запишіть умови використання: необхідні дані вхіду, сигнал про успішне виконання та те, що відбувається у разі часткової невдачі. Такий перелік допомагає зберігати чесність пізніших змін у коді. Запишіть час виконання та витрати на токени або запити поруч із функціональними результатами. Чітке бачення витрат заздалегідь запобігає несподіваним рахункам, коли система переходить від демо-режиму до спільних середовищ. Вимірюйте рівень відтворення інформації на фіксованому наборі запитань перед налаштуванням підказок. Часта зміна підказок рідко допомагає покращити якість пошуку інформації.
Етап 1 — Підготовка знань
Під час виконання етапу підготовки знань першої фази спочатку запишіть умови використання: необхідні дані вхіду, сигнал про успіх та те, що відбувається у разі часткової невдачі. Цей перелік допомагає зберігати чесність подальших змін у коді. Тримайте конфігурацію окремо від коду додатку. Файли середовища, сховища конфіденційних даних та флаги функцій мають знаходитися в одному місці, де оператори можуть їх перевіряти, не читаючи весь код. Вимірюйте рівень запам’ятовування на фіксованому наборі запитань перед налаштуванням підказок. Часта зміна підказок рідко вирішує проблеми слабкого пошуку інформації. Під час виконання етапу підготовки знань першої фази спочатку запишіть умови використання: необхідні дані вхіду, сигнал про успіх та те, що відбувається у разі часткової невдачі. Цей перелік допомагає зберігати чесність подальших змін у коді. Віддавайте перевагу невеликим, тестованим одиницям коду перед об’ємними скриптами. Коли якийсь крок зазнає невдачі, причина має вказувати на конкретну відповідальність, а не на заплутану послідовність операцій.
PDFs
SharePoint
Confluence
SQL Server
Word documents
APIs
↓
Document extraction
↓
Chunking
↓
Embeddings
↓
Search / Vector Index
Document content
Embeddings
Document ID
Page number
Title
Metadata
Permissions
12. Фаза 2 — Запит користувача
Етап 12 Фази 2 найкраще функціонує, якщо його розглядати як вимірювану поверхню. Збережіть один ідеальний запис, один випадок збою та примітку про скасування змін перед розширенням обсягу роботи. Розглядайте цей етап як контракт між вхідними даними та перевіреними результатами. Позначте всі елементи, визначте критерії успіху та не допускайте мовчазного часткового виконання завдань. Розділіть політику часткової обробки даних від політики їх отримання. Зміна однієї з них не повинна змушувати переписувати іншу при зміні показників якості.
User
↓
Application
↓
Retrieval
↓
Azure AI Search
↓
Relevant chunks
↓
Augmentation
↓
Azure OpenAI
↓
Answer
13. Що саме відбувається під час отримання даних?
Етап „13. Що саме відбувається“ найкраще функціонує, якщо його розглядати як вимірювану поверхню. Зафіксуйте один ідеальний запис, один випадок збою та примітку про скасування змін перед розширенням обсягу роботи.
Keyword Search
+
Vector Search
+
Semantic Ranking
+
Filters
14. Що означає „розширений“?
Етап „14. Що означає розширений“ найкраще функціонує, якщо його розглядати як вимірювану поверхню. Зафіксуйте один ідеальний запис, один випадок збою та примітку про скасування змін перед розширенням обсягу роботи.
System:
Answer using the provided company information.
Context:
Employees are entitled to 20 days of annual leave.User:
How many vacation days can I take?
15. Далі йде генерація
Retrieved Context
+
User Question
↓
Azure OpenAI
↓
Generated Answer
16. То де саме знаходиться RAG?
RAG
│
┌────────────┼────────────┐
↓ ↓ ↓
RETRIEVE AUGMENT GENERATE
│ │ │
↓ ↓ ↓
Azure AI Search Context Azure OpenAI
│
┌─────┼─────┐
↓ ↓ ↓
Keyword Vector Hybrid
Search Search Search
17. Чи є Azure AI Search тим самим, що й RAG?
RAG
│
├── Retrieval → Azure AI Search
│
├── Augmentation → Add retrieved context
│
└── Generation → Azure OpenAI
18. Чи є Semantic Kernel RAG?
ASP.NET Core
↓
Semantic Kernel
│
├────→ Azure AI Search
│ ↓
│ Relevant chunks
│
└────→ Azure OpenAI
↓
Answer
19. Чи потребує RAG векторний пошук?
RAG на основі ключових слів
User
↓
Keyword Search
↓
Documents
↓
LLM
RAG на основі векторів
User
↓
Vector Search
↓
Documents
↓
LLM
Гібридний RAG
User
↓
Keyword + Vector
↓
Hybrid Search
↓
Documents
↓
LLM
20. Повна картина для корпорацій
KNOWLEDGE SOURCES
│
┌────────────────┼─────────────────┐
↓ ↓ ↓
PDFs SQL Server SharePoint
│ │ │
└────────────────┼─────────────────┘
↓
Ingestion
↓
Chunking
↓
Embeddings
↓
┌────────────────────┐
│ Azure AI Search │
│ │
│ Text + Vectors + │
│ Metadata/Indexes │
└─────────┬──────────┘
│
INDEX IS READY
│
════════════════════════╪════════════════════════
│
USER QUERY
│
↓
ASP.NET Core API
│
↓
RAG Orchestration
│
↓
┌─────────────────┐
│ Azure AI Search │
│ │
│ Keyword │
│ Vector │
│ Hybrid │
│ Semantic Rank │
└────────┬────────┘
│
↓
Relevant Chunks
│
↓
Augmentation
│
↓
Azure OpenAI
│
↓
Answer