Этот проект направлен на создание двигателя рекомендаций, используя архитектуру агентского извлечения-аугированного поколения (RAG) для предоставления рекомендаций по контексту, основанным на запросах пользователей. MVP фокусируется на модульности и масштабируемости, используя технологии с открытым исходным кодом для эффективности экономии.
Предлагаемая структура кодовой базы:
ragsearch/
├── __init__.py
├── retrieval/
│ ├── __init__.py
│ ├── structured.py # For databases (e.g., DuckDB,sqlLite,MongoDB)
│ ├── unstructured.py # For document loaders (e.g., PDF, Word, HTML)
│ ├── base.py # Abstract base class
├── generation/
│ ├── __init__.py
│ ├── langchain.py # LangChain-based generation
│ ├── llamaindex.py # LlamaIndex-based generation
│ ├── base.py # Abstract base class
├── fusion/
│ ├── __init__.py
│ ├── simple_fusion.py # Simple query-context fusion
│ ├── attention.py # Advanced fusion strategies
│ ├── base.py # Abstract base class
├── reranking/
│ ├── __init__.py # Factory for reranking components
│ ├── bm25_reranker.py # Reranking based on BM25 scores
│ ├── neural_reranker.py # Reranking with neural models
│ ├── base.py # Abstract base class
├── llms/
│ ├── __init__.py # Factory for LLMs
│ ├── openai.py # OpenAI wrapper
│ ├── cohere.py # Cohere wrapper
│ ├── huggingface.py # HuggingFace wrapper
│ ├── base.py # Abstract base class
├── utils/
│ ├── __init__.py
│ ├── logger.py # Logging utilities
│ ├── config.py # Configuration utilities
│ ├── data.py # Data utilities
│ ├── metrics.py # Evaluation metrics
├── tests/
│ ├── __init__.py
│ ├── test_retrieval.py
│ ├── test_generation.py
│ ├── test_fusion.py
│ ├── test_reranking.py
│ ├── test_llms.py
├── main.py # Main entry point
├── config.yaml # Configuration file
├── README.md # Project documentation
├── RAG.md # Documentation for Retrieval-Augmented Generation
├── RAG-FAQ.md # FAQ for Retrieval-Augmented Generation
Поизводимая генерация (RAG)-это процесс оптимизации вывода крупной языковой модели, поэтому она ссылается на авторитетную базу знаний за пределами своих источников обучения данных перед созданием ответа. Большие языковые модели (LLMS) обучаются на огромных объемах данных и используют миллиарды параметров для создания исходного вывода для таких задач, как ответные вопросы, перевод языков и завершение предложений. RAG расширяет и без того мощные возможности LLMS для конкретных областей или внутренней базы знаний организации, без необходимости переподготовки модели. Это экономически эффективный подход к улучшению вывода LLM, поэтому он остается актуальным, точным и полезным в различных контекстах.
LLMS являются ключевыми технологиями искусственного интеллекта (AI), питающей интеллектуальные чат -боты и другие приложения для обработки естественного языка (NLP). Цель состоит в том, чтобы создать ботов, которые могут ответить на вопросы пользователей в различных контекстах путем перекрестного ссылки на авторитетные источники знаний. К сожалению, природа технологии LLM вносит непредсказуемость в ответах LLM. Кроме того, данные обучения LLM являются статичными и вводят дату отсечения знаний, которые у него есть.
Представление ложной информации, когда у нее нет ответа. Представление устаревшей или общей информации, когда пользователь ожидает конкретного, текущего ответа. Создание ответа из неавторитивных источников. Создание неточных ответов из -за путаницы терминологии, в которой различные источники обучения используют одну и ту же терминологию, чтобы говорить о разных вещах. Вы можете думать о крупной языковой модели как о чрезвычайном новом сотруднике, который отказывается оставаться в курсе текущих событий, но всегда отвечает на каждый вопрос с абсолютной уверенностью. К сожалению, такое отношение может негативно повлиять на доверие пользователей, и вы не хотите, чтобы ваши чат -боты эмулировали!
Рэг - это один из подходов к решению некоторых из этих проблем. Он перенаправляет LLM, чтобы получить соответствующую информацию из авторитетных, заранее определенных источников знаний. Организации имеют больший контроль над сгенерированным выводом текста, и пользователи получают представление о том, как LLM генерирует ответ.
Rag Technology приносит несколько преимуществ для генеративных усилий по ИИ организации.
Разработка чат -бота обычно начинает использовать модель фундамента. Основные модели (FMS) представляют собой AP-доступные LLMS, обученные широкому спектру обобщенных и немеченых данных. Вычислительные и финансовые затраты на переподготовку FMS для организации или конкретной доменной информации высоки. RAG-более рентабельный подход к внедрению новых данных в LLM. Это делает технологию генеративного искусственного интеллекта (генеративный ИИ) более доступной и полезной.
Даже если оригинальные источники данных обучения для LLM подходят для ваших потребностей, сложно сохранить актуальность. RAG позволяет разработчикам предоставлять последние исследования, статистику или новости для генеративных моделей. Они могут использовать тряпку для подключения LLM непосредственно к живым каналам в социальных сетях, новостных сайтах или других часто обновляемых источниках информации. Затем LLM может предоставить пользователям последнюю информацию.
RAG позволяет LLM представлять точную информацию с атрибуцией источника. Вывод может включать в себя ссылки или ссылки на источники. Пользователи также могут сами искать исходные документы, если они требуют дополнительных разъяснений или более подробно. Это может повысить доверие и уверенность в вашем генеративном решении искусственного интеллекта.
С помощью RAG разработчики могут более эффективно проверять и улучшать свои приложения в чате. Они могут контролировать и изменять источники информации LLM, чтобы адаптироваться к изменяющимся требованиям или межфункциональному использованию. Разработчики также могут ограничить конфиденциальную информацию о поиске информации различными уровнями авторизации и гарантировать, что LLM генерирует соответствующие ответы. Кроме того, они также могут решать и устранить исправления, если LLM ссылается на неверные источники информации для конкретных вопросов. Организации могут более уверенно внедрять генеративную технологию ИИ для более широкого спектра приложений.
Без тряпки LLM берет пользовательский ввод и создает ответ на основе информации, на которую он был обучен, или что он уже знает. С RAG введен компонент поиска информации, который использует пользовательский ввод для первого извлечения информации из нового источника данных. Пользовательский запрос и соответствующая информация передаются LLM. LLM использует новые знания и свои учебные данные для создания лучших ответов. В следующих разделах представлен обзор процесса.
Новые данные вне исходного набора учебных данных LLM называются внешними данными. Это может быть получено из нескольких источников данных, таких как API, базы данных или репозитории документов. Данные могут существовать в различных форматах, таких как файлы, записи базы данных или текст длинного формирования. Еще одна техника ИИ, называемая языковыми моделями, преобразует данные в числовые представления и хранит их в векторной базе данных. Этот процесс создает библиотеку знаний, которую могут понять генеративные модели ИИ.
Следующим шагом является выполнение поиска актуальности. Пользовательский запрос преобразуется в векторное представление и соответствует векторным базам данных. Например, рассмотрим умный чат -бот, который может ответить на вопросы человеческих ресурсов для организации. Если сотрудник ищет: «Какой у меня годовой отпуск?» Система получит годовые документы по политике отпуска наряду с прошлым отчетом отдельного сотрудника. Эти конкретные документы будут возвращены, потому что они очень релевантны к тому, что у сотрудника есть вклад. Соответствие было рассчитано и установлено с использованием расчетов и представлений математического вектора.
Затем модель RAG дополняет пользовательский ввод (или подсказка), добавляя соответствующие полученные данные в контексте. Этот шаг использует быстрые техники инженерных технологий для эффективной связи с LLM. Дополненная подсказка позволяет моделям крупных языков генерировать точный ответ на запросы пользователей.
Следующий вопрос может быть - что, если внешние данные становятся несвежими? Чтобы сохранить текущую информацию для поиска, асинхронно обновите документы и обновите внедрение представления документов. Вы можете сделать это с помощью автоматических процессов в реальном времени или периодической обработки партии. Это распространенная проблема в аналитике данных-можно использовать дифференциальные подходы к науке о данных для изменений.
Семантический поиск улучшает результаты RAG для организаций, желающих добавить огромные внешние источники знаний в свои приложения LLM. Современные предприятия хранят огромные объемы информации, такие как руководства, часто задаваемые вопросы, исследовательские отчеты, руководства по обслуживанию клиентов и репозитории документов по персоналу в различных системах. Поиск контекста сложный в масштабе и, следовательно, снижает качество генеративного выхода.
Технологии семантического поиска могут сканировать большие базы данных разрозненной информации и более точно извлекать данные. Например, они могут ответить на такие вопросы, как: «Сколько было потрачено на ремонт машин в прошлом году?» Сопоставляя вопрос с соответствующими документами и возвращая конкретный текст вместо результатов поиска.
Обычные или ключевые решения для поиска в RAG дают ограниченные результаты для задач интенсивных знаний. Разработчики также должны иметь дело с вставками Word, документированием Chunking и другими сложностями, поскольку они вручную готовит свои данные. Напротив, технологии семантического поиска выполняют всю работу подготовки базы знаний, поэтому разработчикам не нужно. Они также генерируют семантически релевантные отрывки и токеновые слова, упорядоченные по релевантности, чтобы максимизировать качество полезной нагрузки.