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

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

Пошаговое руководство по Practical notes: Semantic Search против Vector Search: в чём разница, а также информация о контрактах, проверках и слотах для вставки кода для команд, использующих эту паттерн-архитектуру.

3159 слов

В этом руководстве пошагово показан путь от сырья до функционирующей системы для темы: «Семантический поиск против векторного поиска: в чём разница и какое место они занимают в RAG?». Основное внимание уделяется практическим шагам, чёткой проверке и коду, который можно просто добавить в репозиторий без необходимости угадывать намерения автора. На этапе обзора необходимо определить входные данные, ответственного за выполнение шага и критерии завершения перед внесением изменений в код. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не пытаясь угадать скрытое состояние системы. Лучше использовать небольшие, тестируемые единицы кода вместо обширных скриптов. При сбое шага причина должна быть связана с конкретной функцией, а не с запутанной цепочкой операций.

1. Начните с самой простой модели мышления

При работе над этапом «Начните с 1» сначала запишите контракт: необходимые входные данные, сигнал успешного завершения и действия при частичной неудаче. Такой список помогает сохранять честность при последующих изменениях кода. Рассматривайте этот этап как контракт между входными данными и проверенными выходными результатами. Дайте названия элементам, определите критерии успешности и не допускайте молчаливого частичного выполнения задачи. Храните в кэше стабильные инструкции системы и схемы инструментов. Пересылка одинаковых данных является распространенной причиной избыточных ресурсов.

Поиск по ключевым словам

При работе над этапом поиска по ключевым словам сначала запишите условия контракта: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой список помогает сохранять честность при последующих изменениях кода. Рядом с функциональными результатами записывайте время выполнения и стоимость токенов или запросов. Отображение затрат с самого начала предотвращает неожиданные счета при переходе с демо-среды в общедоступные среды. Измеряйте показатель воспроизводимости на фиксированном наборе вопросов перед настройкой подсказок. Частая смена подсказок редко помогает улучшить качество поиска.

Векторный поиск

При работе над этапом векторного поиска сначала запишите спецификацию: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой чек-лист помогает сохранять честность последующих изменений в коде. Храните конфигурацию отдельно от кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь код. Измеряйте показатель воспроизводимости на фиксированном наборе вопросов перед настройкой подсказок. Частая смена подсказок редко помогает улучшить качество поиска. При работе над этапом векторного поиска сначала запишите спецификацию: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой чек-лист помогает сохранять честность последующих изменений в коде. Предпочитайте небольшие, тестируемые модули большим скриптам. Когда какой-то шаг терпит неудачу, ошибка должна указывать на конкретную ответственность, а не на запутанную цепочку операций.

Семантический поиск

Этап семантического поиска работает наилучшим образом, когда его рассматривают как измеримую систему. Соберите один идеальный пример результатов, один случай сбоя и запись о возврате к предыдущему состоянию перед расширением объема работ. Рассматривайте этот этап как контракт между входными данными и проверенными результатами. Дайте названия соответствующим элементам, определите критерии успешного выполнения и не допускайте молчаливого частичного завершения работы. Разделяйте политику разбиения данных на части и политику поиска. Изменение одной из них не должно приводить к переписыванию другой при изменении показателей качества.

Keyword Search
     ↓
Match words
Vector Search
     ↓
Match embedding similaritySemantic Search
     ↓
Match meaning / relevance

2. Что такое поиск по ключевым словам?

Этап «Что такое ключевое слово» работает наилучшим образом, если рассматривать его как измеримую характеристику. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объёма работ. Записывайте временные показатели, а также стоимость токенов или запросов рядом с функциональными результатами. Отслеживание затрат на раннем этапе помогает избежать неожиданных счетов при переходе от демо-среды к общедоступным средам. Разделяйте политику разбиения данных на части и политику поиска. Изменение одной из них не должно приводить к необходимости переписывания другой при изменении показателей качества.

annual
leave
days
employees

Где поиск по ключевым словам работает очень хорошо

Поиск по ключевым словам в режиме «Где» работает наилучшим образом, когда его рассматривают как измеримую область. Соберите один идеальный пример работы, один случай сбоя и запись о возврате к предыдущему состоянию перед расширением объема работ. Храните конфигурацию вне кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь код. Разделяйте политику разбиения данных на части и политику их поиска. Изменение одной из них не должно приводить к переписыванию другой при изменении показателей качества. Поиск по ключевым словам в режиме «Где» работает наилучшим образом, когда его рассматривают как измеримую область. Соберите один идеальный пример работы, один случай сбоя и запись о возврате к предыдущему состоянию перед расширением объема работ. Предпочитайте небольшие, тестируемые единицы кода вместо обширных скриптов. Когда какой-либо шаг срабатывает некорректно, причина сбоя должна указывать на конкретную ответственность, а не на запутанную цепочку операций.

INC-10996
PROD-12345
LAPTOP-XPS-15
HTTP 401
API-OrderService

3. Ограничения поиска по ключевым словам

На этом этапе «Ограничения» необходимо определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Рассматривайте этот этап как контракт между входными данными и проверенными выходными результатами. Укажите названия результатов работы, определите критерии успеха и не допускайте молчаливого частичного завершения задачи. Цитируйте те фрагменты, которые фактически легли в основу ответа. Без цитат операторы не смогут отличить галлюцинации от пробелов в индексации.

annual leave
vacation time

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 «Где находится стадия выполнения в Azure» необходимо определить входные данные, ответственного за шаг и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Храните конфигурацию вне кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь граф выполнения. Указывайте те участки текста, которые фактически легли в основу ответа. Без цитат операторы не смогут отличить галлюцинации от пробелов в индексации. Для пункта 9 «Где находится стадия выполнения в Azure» необходимо определить входные данные, ответственного за шаг и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Предпочитайте небольшие, тестируемые единицы кода большим скриптам. Когда шаг терпит неудачу, причина должна указывать на конкретную ответственность, а не на запутанную структуру обработки данных.

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 — Запрос пользователя

Этап 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

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

Ответ на уровне собеседования

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