Claude в Google Vertex AI

Подключение Claude через Google Cloud — авторизация, регионы, биллинг.

100 уроков, первые 3 бесплатно. Полный доступ: 1490 руб.

Уроки курса

  1. Welcome to the course
  2. Overview of Claude models
  3. Accessing the API
  4. Vertex AI Setup
  5. Making a request
  6. Multi-turn conversations
  7. Chat exercise
  8. System prompts
  9. System prompts exercise
  10. Temperature
  11. Course satisfaction survey
  12. Response streaming
  13. Controlling model output
  14. Structured data
  15. Structured data exercise
  16. Quiz on accessing Claude with the API
  17. Prompt evaluation
  18. A typical eval workflow
  19. Generating test datasets
  20. Running the eval
  21. Model based grading
  22. Code based grading
  23. Exercise on prompt evals
  24. Quiz on prompt evaluation
  25. Prompt engineering
  26. Being clear and direct
  27. Being specific
  28. Structure with XML tags
  29. Providing examples
  30. Exercise on prompting
  31. Quiz on prompt engineering techniques
  32. Introducing tool use
  33. Project overview
  34. Tool functions
  35. Tool schemas
  36. Handling message blocks
  37. Sending tool results
  38. Multi-turn conversations with tools
  39. Implementing multiple turns
  40. Using multiple tools
  41. The batch tool
  42. Tools for structured data
  43. The text edit tool
  44. The web search tool
  45. Quiz on tool use with Claude
  46. Introducing Retrieval Augmented Generation
  47. Text chunking strategies
  48. Text embeddings
  49. The full RAG flow
  50. Implementing the RAG flow
  51. BM25 lexical search
  52. A Multi-index RAG pipeline
  53. Reranking results
  54. Contextual retrieval
  55. Quiz on Retrieval Augmented Generation
  56. Extended thinking
  57. Image support
  58. PDF support
  59. Citations
  60. Prompt caching
  61. Rules of prompt caching
  62. Prompt caching in action
  63. Quiz on features of Claude
  64. Introducing MCP
  65. MCP clients
  66. Project setup
  67. Defining tools with MCP
  68. The server inspector
  69. Implementing a client
  70. Defining resources
  71. Accessing resources
  72. Defining prompts
  73. Prompts in the client
  74. MCP review
  75. Quiz on Model Context Protocol
  76. Anthropic apps
  77. Claude Code setup
  78. Claude Code in action
  79. Enhancements with MCP servers
  80. Parallelizing Claude Code
  81. Automated debugging
  82. Computer use
  83. How computer use works
  84. Agents and workflows
  85. Parallelization workflows
  86. Chaining workflows
  87. Routing workflows
  88. Agents and tools
  89. Environment inspection
  90. Workflows vs agents
  91. Quiz on agents and workflows
  92. Final assessment quiz
  93. Course Wrap Up
  94. Course Description
  95. Course Description
  96. Course Description
  97. Course Description
  98. Course Description
  99. Course Description
  100. Course Description

BM25: Лексический поиск для улучшения RAG-конвейеров

В мире больших языковых моделей (LLM) и систем на основе Claude, таких как Claude с Google Vertex AI, способность находить и извлекать релевантную информацию является ключевой. Это основа для создания мощных приложений, использующих архитектуру Retrieval Augmented Generation (RAG). RAG-конвейеры позволяют LLM отвечать на вопросы, используя актуальные и специфичные данные, выходящие за рамки их первоначального обучения. Однако, при создании таких систем, вы быстро обнаружите, что один лишь семантический поиск не всегда дает наилучшие результаты. Иногда вам нужны точные совпадения терминов, которые семантический поиск может упустить. Решение заключается в объединении семантического поиска с лексическим поиском, используя такую технику, как BM25.

Проблема чисто семантического поиска

Семантический поиск — это мощный инструмент, который использует embeddings и векторные базы данных для поиска информации на основе ее смысла, а не точных совпадений слов. Он отлично подходит для запросов типа "расскажи мне о возобновляемых источниках энергии", находя документы, которые обсуждают солнечную, ветровую или гидроэнергетику, даже если в запросе не было этих конкретных слов.

Однако, у него есть свои ограничения. Представьте, что вы ищете конкретный идентификатор инцидента, например, "INC-2023-Q4-011", в большом наборе документов. Хотя этот точный термин может встречаться несколько раз в релевантных разделах, чисто семантический поиск может вернуть вам разделы, которые семантически похожи (например, говорят о "проблемах с инцидентами" или "отчетах за четвертый квартал"), но на самом деле не содержат искомого вами конкретного идентификатора. Это происходит потому, что семантический поиск фокусируется на значении и контексте, а не на точном совпадении символов. Когда вам требуется точное совпадение терминов, необходим другой подход.

Гибридная стратегия поиска: лучшее из двух миров

Чтобы преодолеть ограничения чисто семантического поиска и обеспечить максимальную точность и полноту извлечения информации, применяется гибридная стратегия. Суть ее заключается в параллельном выполнении двух типов поиска и последующем объединении их результатов. Эта стратегия позволяет получить "лучшее из двух миров":

Что такое BM25 и как он работает?

BM25 (Best Match 25) — это широко используемый алгоритм для лексического поиска, который отлично подходит для RAG-конвейеров. Он оценивает релевантность документа по отношению к поисковому запросу, основываясь на частоте появления терминов запроса в документе и их редкости во всей коллекции документов. Вот как BM25 обрабатывает поисковый запрос:

  1. Токенизация запроса: Сначала пользовательский запрос разбивается на отдельные термины (tokens). Например, запрос "Что случилось с INC-2023-Q4-011?" будет разбит на "Что", "случилось", "с", "INC-2023-Q4-011".
  2. Подсчет частоты терминов: Для каждого термина из запроса алгоритм подсчитывает, как часто он встречается в каждом документе коллекции.
  3. Взвешивание терминов по редкости: Это один из ключевых шагов. Терминам, которые встречаются реже во всей коллекции документов, присваивается более высокий "вес" или важность. Например, обычные слова, такие как "и", "или", "с", имеют очень низкий вес, тогда как уникальные термины, такие как "INC-2023-Q4-011" или "Anthropic", получают значительно более высокие баллы важности.
  4. Поиск наилучших совпадений: Наконец, BM25 ранжирует документы, отдавая предпочтение тем, которые содержат больше экземпляров высоко-взвешенных терминов из запроса. Документы, содержащие редкие и важные термины, получают значительно более высокий рейтинг.

Ключевая идея заключается в том, что редкие термины, такие как "INC-2023-Q4-011", гораздо важнее для поиска, чем общие слова вроде "а" или "в". BM25 эффективно использует эту информацию для точного ранжирования.

Применение BM25 в RAG-конвейере

Интеграция BM25 в RAG-конвейер относительно проста, поскольку многие библиотеки предоставляют готовые реализации. Концептуально, процесс настройки системы BM25 выглядит следующим образом:

# Создание хранилища BM25
store = BM25Index()

# Добавление документов в хранилище
for chunk in chunks:
    store.add_document({"content": chunk})

# Поиск в хранилище
results = store.search("Что случилось с INC-2023-Q4-011?", 3)

В этом примере BM25Index() представляет собой объект, который управляет индексацией и поиском. Метод add_document() используется для добавления текстовых фрагментов (chunks) из вашей коллекции данных в индекс BM25. Затем метод search() позволяет выполнить запрос, возвращая наиболее релевантные документы. Важно отметить, что многие реализации BM25 предоставляют API, аналогичный тем, что используются в системах семантического поиска, что упрощает их совместное использование в рамках одного конвейера.

Преимущества гибридного подхода

Когда вы выполняете тот же запрос, который не дал результатов при использовании только семантического поиска, через систему BM25, вы получаете значительно лучшие результаты. Вместо возврата нерелевантных разделов, BM25 отдает приоритет тем разделам, которые фактически содержат ваши конкретные поисковые термины. Алгоритм правильно определяет, что "INC-2023-Q4-011" является редким, важным термином и ранжирует документы, содержащие его, гораздо выше, чем документы, содержащие только общие слова из запроса.

Теперь, когда у вас есть как семантическая, так и лексическая системы поиска, работающие независимо, следующим шагом является объединение их результатов. Этот гибридный подход дает вам лучшее из обоих миров — контекстное понимание семантического поиска в сочетании с точностью точного совпадения терминов из лексического поиска. Обе системы поиска часто используют схожие API, что делает параллельное выполнение запросов и объединение их результатов в единый, более полный набор результатов простым и эффективным процессом, значительно улучшающим качество ответов вашего RAG-конвейера.