О проекте
Последние обновления в нашем блоге
Пример
Зрение
Функции
Начиная
Использование и концепции
Дорожная карта
Содействие
Лицензия
При работе с другими инструментами на основе Python возникли разочарования по поводу производительности, стабильности и простоты использования. Так родился Swiftide. Цель Swiftide — предложить полноценную библиотеку поиска с расширенной генерацией, которая быстра, проста в использовании, надежна и легко расширяется.
Часть проекта bosun.ai. Будущая платформа для автономного улучшения кода.
Мы <3 обратная связь: идеи проекта, предложения и жалобы приветствуются. Не стесняйтесь открыть вопрос или связаться с нами в Discord.
Отличными отправными точками являются этот файл readme, Swiftide.rs, папка примеров, наш блог bosun.ai и подробные руководства на Swiftide-tutorial.
Осторожность
Swiftide находится в стадии активной разработки, и пока мы работаем над версией 1.0, в нее могут быть внесены серьезные изменения. В документации здесь могут отсутствовать все функции и, несмотря на наши усилия, быть немного устаревшими. Ожидайте ошибок. Мы рекомендуем всегда следить за нашей документацией на GitHub и API. Если вы обнаружили проблему или у вас есть какие-либо отзывы, мы будем рады услышать ваше мнение по проблеме.
(вернуться к началу)
Оцените трубопроводы Swiftide вместе с Ragas (15 сентября 2024 г.)
Релиз — Swiftide 0.12 (13 сентября 2024 г.)
Информация о локальном коде с помощью Ollama, FastEmbed и OpenTelemetry (04 сентября 2024 г.)
Релиз — Swiftide 0.9 (2 сентября 2024 г.)
Принесите свои трансформеры (13 августа 2024 г.)
Релиз — Swiftide 0.8 (12 августа 2024 г.)
Релиз — Swiftide 0.7 (28 июля 2024 г.)
Создание конвейера ответов на кодовые вопросы (13 июля 2024 г.)
Релиз — Swiftide 0.6 (12 июля 2024 г.)
Релиз — Swiftide 0.5 (1 июля 2024 г.)
(вернуться к началу)
Индексирование проекта локального кода, его разбиение на более мелкие части, обогащение узлов метаданными и сохранение в Qdrant:
indexing :: Pipeline :: from_loader ( FileLoader :: new ( "." ) . with_extensions ( & [ "rs" ] ) )
. with_default_llm_client ( openai_client . clone ( ) )
. filter_cached ( Redis :: try_from_url (
redis_url ,
"swiftide-examples" ,
) ? )
. then_chunk ( ChunkCode :: try_for_language_and_chunk_size (
"rust" ,
10 .. 2048 ,
) ? )
. then ( MetadataQACode :: default ( ) )
. then ( move |node| my_own_thing ( node ) )
. then_in_batch ( Embed :: new ( openai_client . clone ( ) ) )
. then_store_with (
Qdrant :: builder ( )
. batch_size ( 50 )
. vector_size ( 1536 )
. build ( ) ? ,
)
. run ( )
. await ? ;
Запрос примера использования конвейера запросов:
query :: Pipeline :: default ( )
. then_transform_query ( GenerateSubquestions :: from_client (
openai_client . clone ( ) ,
) )
. then_transform_query ( Embed :: from_client (
openai_client . clone ( ) ,
) )
. then_retrieve ( qdrant . clone ( ) )
. then_answer ( Simple :: from_client ( openai_client . clone ( ) ) )
. query ( "How can I use the query pipeline in Swiftide?" )
. await ? ;
Дополнительные примеры можно найти в /examples.
(вернуться к началу)
Наша цель — создать быструю расширяемую платформу для извлечения дополненной генерации для дальнейшей разработки автоматизированных приложений искусственного интеллекта с простым в использовании и расширяемым API.
(вернуться к началу)
tracing
. Дополнительные сведения см. в разделе /examples и контейнере tracing
.Особенность | Подробности |
---|---|
Поддерживаемые поставщики моделей большого языка | OpenAI (и Azure) — все модели и внедрения AWS Bedrock — антропный и титановый Грок - Все модели Оллама - Все модели |
Загрузка данных | Файлы Соскабливание Флувио Паркет Другие трубопроводы и потоки |
Трансформаторы и генерация метаданных | Создание вопросов и ответов как для текста, так и для кода (Хайд) Резюме, названия и запросы через LLM Извлечение определений и ссылок с помощью Tree-Sitter |
Разделение и дробление | Уценка Текст (text_splitter) Кодекс (с сидящим на дереве) |
Хранилище | Кдрант Редис ЛансДБ |
Конвейер запросов | Поиск по сходству и гибридный поиск, преобразования запросов и ответов, а также оценка |
(вернуться к началу)
Убедитесь, что у вас установлена цепочка инструментов ржавчины. ржавчина Это рекомендуемый подход.
Для использования OpenAI требуется ключ API. Обратите внимание, что по умолчанию async_openai
использует переменные среды OPENAI_API_KEY
.
Другие интеграции могут иметь свои собственные требования.
Создайте новый проект Rust.
Добавить свифтайд
cargo add swiftide
Включите функции интеграции, которые вы хотели бы использовать в своем Cargo.toml
Напишите конвейер (см. наши примеры и документацию)
(вернуться к началу)
Прежде чем создавать потоки, вам необходимо включить и настроить все необходимые интеграции. См. /примеры.
У нас есть много примеров, пожалуйста, обратитесь к /examples и документации.
Примечание
По умолчанию интеграция не включена, поскольку некоторые из них содержат много кода. Мы рекомендуем вам тщательно выбрать те интеграции, которые вам нужны. По соглашению флаги имеют то же имя, что и интеграция, которую они представляют.
Поток индексирования начинается с загрузчика, который генерирует узлы. Например, в Fileloader каждый файл является Node.
Затем вы можете нарезать, расширять и фильтровать узлы. Каждый отдельный этап конвейера требует разных качеств. Это дает возможность расширения.
У узлов есть путь, чанк и метаданные. В настоящее время метаданные копируются при фрагментировании и всегда внедряются при использовании преобразователя OpenAIEmbed.
(impl Loader)
начальная точка потока, создает и отправляет узлы(impl NodeCache)
фильтрует кэшированные узлы(impl Transformer)
преобразует узел и помещает его в поток(impl BatchTransformer)
преобразует несколько узлов и помещает их в поток.(impl ChunkerTransformer)
преобразует один узел и генерирует несколько узлов(impl Storage)
сохраняет узлы в бэкэнде хранилища, это можно объединить в цепочку Кроме того, реализовано несколько универсальных трансформаторов. Они привлекают разработчиков SimplePrompt
и EmbedModel
для выполнения своих задач.
Предупреждение
Из-за производительности фрагментирование перед добавлением метаданных очень быстро приводит к ошибкам ограничения скорости в OpenAI, особенно с более быстрыми моделями, такими как 3,5-турбо. Будьте в курсе.
Поток запросов начинается со стратегии поиска. В конвейере запросов Query
проходит несколько этапов. Трансформаторы и ретриверы работают вместе, чтобы получить правильный контекст в подсказке, прежде чем генерировать ответ. Трансформаторы и ретриверы работают на разных этапах запроса через общий конечный автомат. Кроме того, стратегия поиска является общей для всего конвейера, и ретриверам необходимо реализовывать каждую стратегию отдельно.
Звучит много, но, tl&dr; конвейер запросов полностью и строго типизирован .
Кроме того, можно оценить конвейеры запросов. Т.е. по Рагасу.
Подобно конвейеру индексирования, каждый шаг управляется простыми типажами, и замыкания также реализуют эти свойства.
(вернуться к началу)
Полный список предлагаемых функций (и известных проблем) см. в разделе «Открытые проблемы».
(вернуться к началу)
Если вы хотите больше поучаствовать в Swiftide, у вас есть вопросы или вы хотите пообщаться, вы можете найти нас в Discord.
(вернуться к началу)
Swiftide находится на очень ранней стадии, и мы понимаем, что нам не хватает функций для более широкого сообщества. Взносы очень приветствуются. ?
Если у вас есть отличная идея, создайте форк репозитория и создайте запрос на включение. Также можно просто открыть задачу с тегом «улучшение». Не забудьте поставить проекту звезду! Еще раз спасибо!
Если вы просто хотите внести свой вклад (будьте здоровы!), посмотрите наши проблемы или присоединяйтесь к нам в Discord.
git checkout -b feature/AmazingFeature
)git commit -m 'feat: Add some AmazingFeature'
)git push origin feature/AmazingFeature
)Подробнее см. ВКЛАД.
(вернуться к началу)
Распространяется по лицензии MIT. См. LICENSE
для получения дополнительной информации.
(вернуться к началу)