Typescript: почему он идеально подходит для вашего приложения RAG
27 февраля 2024 г.Когда дело доходит до создания приложений с использованием извлечения дополненной генерации (RAG), многие полнофункциональные разработчики полагают, что им нужно начать с изучения Python и его обширной экосистемы машинного обучения и GenAI. Но Typescript (или Javascript, если вас это интересует) идеально подходит для приложений такого типа.
В этом посте мы рассмотрим основные проблемы написания приложения RAG и увидим, как сильные стороны Typescript идеально сочетаются с этой проблемой.
Прежде всего, вам не нужен Python
Давайте разберемся с этим: Python — отличный язык с богатой экосистемой инструментов, но для большинства приложений RAG Python не требуется.
Хотя библиотеки и платформы Python действительно эффективны для обучения моделей, реальность такова, что вы с большей вероятностью будете использовать существующие модели, чем обучать свои собственные. Использование предварительно обученных моделей с помощью библиотек и API — это суть разработки приложений RAG, области, в которой TypeScript превосходен.
Многие из самых популярных библиотек Gen AI (например, LangChain и LlamaIndex) осознали этот факт и выпустили реализацию своего набора инструментов на Typescript. Ожидайте, что экосистема Typescript Gen AI будет продолжать расти по мере того, как Gen AI становится все более популярным.
Быстрое проектирование — это то, на что вы потратите свое время
В основе любого приложения с расширенной генерацией поиска (RAG) лежит искусство и наука разработки подсказок — процесса, который включает в себя проектирование и уточнение входных данных (подсказок), подаваемых в большие языковые модели (LLM), для достижения максимальной эффективности. точные, актуальные и контекстуально соответствующие ответы.
const prompt =
PromptTemplate.fromTemplate(`Answer the question
based only on the following context:
{context}
Question: {question}`);
Этот процесс важен, поскольку качество результатов, генерируемых LLM, напрямую зависит от того, насколько хорошо построено приглашение. Хорошо спроектированная подсказка может значительно повысить эффективность генеративной модели, что делает разработку подсказок, возможно, наиболее важным аспектом создания приложения RAG.
const chain = RunnableSequence.from([
{
context: retriever.pipe(formatDocumentsAsString),
question: new RunnablePassthrough(),
},
prompt,
model,
new StringOutputParser(),
]);
const stream = await chain.streamLog(question);
Экосистема TypeScript полна инструментов и библиотек, которые упрощают быстрое проектирование и вывод. Такие фреймворки, как LangChain, и инструменты для взаимодействия с API от OpenAI или Vertex AI легко доступны в экосистеме JavaScript.
Более того, такие утилиты, как LangSmith для уточнения подсказок и встроенные механизмы журналирования, гарантируют, что у разработчиков будет все необходимое для создания и оптимизации взаимодействия с моделями ИИ.
Организация вызовов API сделает ваше приложение умным
В основе приложений RAG лежит способность получать, обрабатывать и синтезировать информацию из различных источников данных. Часть RAG «Поиск» — это то, что отличает ваше приложение от наивных запросов ChatGPT.
Используя знания, соответствующие потребностям ваших пользователей, вы можете обеспечить индивидуальный и превосходный опыт, и обычно это достигается за счет взаимодействия с API и базами знаний.
const messages = [
...prompt,
[{role: 'user': content: 'Tell me about RAG'}]
]
const res = await openai.chat.completions.create({
messages,
model: 'gpt-3.5-turbo',
temperature: 0.7,
})
TypeScript превосходно справляется с организацией вызовов API и обработкой ответов, плавно объединяя разрозненные данные в связную, полезную информацию. Эта способность эффективно управлять асинхронными операциями и сетевыми запросами присуща TypeScript благодаря его событийно-ориентированному характеру и надежной поддержке синтаксиса Promises
и async/await
.
Пользовательский опыт превыше всего
Пользовательский опыт может создать или разрушить приложение RAG, поскольку динамичный и часто непредсказуемый характер создаваемого контента создает уникальные проблемы для проектирования пользовательского интерфейса (UI) и взаимодействия с пользователем (UX).
Стохастичность (непредсказуемость), присущая реакциям генеративных моделей, требует интерфейсов, которые могут корректно обрабатывать и представлять различные результаты в последовательной и удобной для пользователя форме.
Кроме того, необходимость в обратной связи с пользователями для оценки и улучшения производительности генеративных моделей делает важным проектирование интерфейсов, которые активно привлекают пользователей и поощряют взаимодействие. Учитывая вычислительные требования этих приложений, оптимизация потоковой передачи и минимизация задержек имеют решающее значение для обеспечения бесперебойного взаимодействия с пользователем.
Обеспечение того, чтобы приложение оставалось отзывчивым и интерактивным, даже если оно выполняет сложные серверные операции, имеет первостепенное значение для удовлетворенности пользователей и общего успеха приложения.
TypeScript, корни которого глубоко укоренены в веб-технологиях, не имеет себе равных в создании адаптивных и интерактивных пользовательских интерфейсов. Экосистема предлагает множество фреймворков и библиотек, таких как React, Vue и Angular, которые позволяют создавать приложения, которые не только великолепно выглядят, но и исключительно хорошо работают даже в средах реального времени, чувствительных к задержкам.
Более того, TypeScript может работать как на стороне клиента, так и на стороне сервера, что упрощает быстрое создание потрясающих приложений.
Dewy управляет приемом и индексированием документов
Прием и индексирование документов — это область, в которой зрелая экосистема искусственного интеллекта Python отличает ее от Typescript. До недавнего времени наиболее часто используемые библиотеки для подготовки документов для RAG были основаны на Python, и управлять этим процессом было непросто:
* Такие библиотеки, как LangChain, предлагают сотни способов сделать одно и то же, но не дают указаний, какой из них лучше.
* Организация обработки документов и векторного индексирования надежным и отказоустойчивым способом является непростой задачей (подробнее об этом). .
* Запрос и ранжирование извлеченной информации сложны, и может быть сложно понять, почему ваши результаты не соответствуют контексту.
Именно из-за этих проблем мы создали Dewy.
const document = await dewy.kb.addDocument({
collection: 'receipts',
url: document_url,
});
Dewy — это автономная база знаний, которая упрощает сложный процесс извлечения и запроса ваших документов. Дьюи дополняет последнюю часть головоломки RAG, позволяя вам быстро создавать приложения от начала до конца, используя уже знакомые вам инструменты.
Заключение
Среда разработки приложений RAG развивается, и TypeScript лидирует в области доступности, функциональности и эффективности. Эта экосистема не только предоставляет комплексный набор инструментов для взаимодействия с передовыми моделями искусственного интеллекта, но также превосходно работает в важнейших областях интеграции API, разработки пользовательского интерфейса и обработки данных.
Если вы отправляетесь на путь создания приложения RAG, TypeScript предлагает привлекательный, универсальный и мощный набор инструментов, который идеально соответствует требованиям современной разработки приложений.
Также опубликовано здесь
Оригинал