Головна / Статті / Практичні нотатки: семантичний пошук проти векторного пошуку: у чому різниця, та

Практичні нотатки: семантичний пошук проти векторного пошуку: у чому різниця, та

Покрокове керівництво з практичних нотаток: семантичний пошук проти векторного пошуку: у чому різниця, а також контракти, перевірки та слоти для коду для команд, які впроваджують цю схему.

3159 слів

У цьому посібнику детально описано шлях від сировини до функціональної системи для теми: «Семантичний пошук проти векторного пошуку: у чому різниця та яке їхнє місце в 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

Ментальна модель старшого технічного керівника

Відповідь на рівні інтерв’ю

Чек-лист для операцій