프로젝트 소개
블로그의 최신 업데이트
예
비전
특징
시작하기
사용법과 개념
로드맵
기여
특허
다른 Python 기반 도구로 작업하는 동안 성능, 안정성 및 사용 편의성에 대한 불만이 생겼습니다. 그리하여 Swiftide가 탄생했습니다. Swiftide의 목표는 빠르고, 사용하기 쉽고, 안정적이며 확장하기 쉬운 완전한 기능을 갖춘 검색 증강 생성 라이브러리를 제공하는 것입니다.
bosun.ai 프로젝트의 일부입니다. 자율 코드 개선을 위한 향후 플랫폼입니다.
우리는 <3 피드백: 프로젝트 아이디어, 제안 및 불만 사항을 매우 환영합니다. 자유롭게 문제를 열거나 불일치로 문의해 주세요.
좋은 출발점은 이 Readme, Swiftide.rs, 예제 폴더, bosun.ai의 블로그 및 Swiftide-tutorial의 심층 튜토리얼입니다.
주의
Swiftide는 열심히 개발 중이며 1.0을 향해 작업하는 동안 주요 변경 사항이 있을 수 있습니다. 여기에 있는 문서는 모든 기능이 부족할 수 있으며 노력에도 불구하고 약간 오래된 것입니다. 버그가 있을 것으로 예상됩니다. 항상 github 및 api 문서를 주의 깊게 살펴보는 것이 좋습니다. 문제를 발견했거나 피드백이 있는 경우 해당 문제에 대한 귀하의 의견을 듣고 싶습니다.
(맨 위로)
Ragas로 Swiftide 파이프라인 평가(2024-09-15)
출시 - Swiftide 0.12 (2024-09-13)
Ollama, FastEmbed 및 OpenTelemetry를 사용한 로컬 코드 정보(2024-09-04)
출시 - Swiftide 0.9 (2024-09-02)
나만의 트랜스포머를 가져오세요 (2024-08-13)
출시 - Swiftide 0.8 (2024-08-12)
출시 - Swiftide 0.7 (2024-07-28)
코드 질문 답변 파이프라인 구축 (2024-07-13)
출시 - Swiftide 0.6 (2024-07-12)
출시 - Swiftide 0.5(2024-07-1)
(맨 위로)
로컬 코드 프로젝트 인덱싱, 더 작은 조각으로 분할, 메타데이터로 노드 강화, 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를 통해 자동화된 AI 애플리케이션 개발을 더욱 발전시키기 위한 검색 증강 생성을 위한 빠르고 확장 가능한 플랫폼을 만드는 것입니다.
(맨 위로)
tracing
지원됩니다. 자세한 내용은 /examples 및 tracing
상자를 참조하세요.특징 | 세부 |
---|---|
지원되는 대형 언어 모델 제공자 | OpenAI(및 Azure) - 모든 모델 및 임베딩 AWS Bedrock - 인류 및 타이탄 Groq - 모든 모델 Ollama - 모든 모델 |
데이터 로드 중 | 파일 긁기 플루비오 쪽매 세공 기타 파이프라인 및 스트림 |
변환기 및 메타데이터 생성 | 텍스트와 코드 모두에 대한 질문 및 답변 생성(Hyde) LLM을 통한 요약, 제목 및 쿼리 tree-sitter를 사용하여 정의 및 참조 추출 |
분할 및 청킹 | 가격 인하 텍스트(text_splitter) 코드(트리시터 포함) |
저장 | Qdrant 레디스 랜스DB |
쿼리 파이프라인 | 유사성 및 하이브리드 검색, 쿼리 및 응답 변환, 평가 |
(맨 위로)
Rust 툴체인이 설치되어 있는지 확인하세요. Rustup이 권장되는 접근 방식입니다.
OpenAI를 사용하려면 API 키가 필요합니다. 기본적으로 async_openai
OPENAI_API_KEY
환경 변수를 사용합니다.
다른 통합에는 고유한 요구 사항이 있을 수 있습니다.
새로운 Rust 프로젝트 설정
스위프트라이드 추가
cargo add swiftide
Cargo.toml
에서 사용하려는 통합 기능을 활성화하세요.
파이프라인 작성(예제 및 문서 참조)
(맨 위로)
스트림을 구축하기 전에 필요한 통합을 활성화하고 구성해야 합니다. /examples를 참조하세요.
예제가 많이 있습니다. /examples 및 설명서를 참조하세요.
메모
일부 통합은 코드가 많기 때문에 기본적으로 활성화되지 않습니다. 필요한 통합을 선별적으로 선택하는 것이 좋습니다. 규칙에 따라 플래그는 해당 플래그가 나타내는 통합과 동일한 이름을 갖습니다.
인덱싱 스트림은 노드를 내보내는 로더로 시작됩니다. 예를 들어 Fileloader의 경우 각 파일은 Node.js입니다.
그런 다음 노드를 분할하고, 보강하고, 필터링할 수 있습니다. 파이프라인의 각 단계에는 서로 다른 특성이 필요합니다. 이렇게 하면 확장이 가능해집니다.
노드에는 경로, 청크 및 메타데이터가 있습니다. 현재 메타데이터는 청크할 때 복사되고 OpenAIEmbed 변환기를 사용할 때 항상 포함됩니다.
(impl Loader)
스트림의 시작점, 노드 생성 및 방출(impl NodeCache)
는 캐시된 노드를 필터링합니다.(impl Transformer)
노드를 변환하여 스트림에 넣습니다.(impl BatchTransformer)
는 여러 노드를 변환하여 스트림에 배치합니다.(impl ChunkerTransformer)
는 단일 노드를 변환하고 여러 노드를 방출합니다.(impl Storage)
는 스토리지 백엔드에 노드를 저장하며, 이는 연결될 수 있습니다. 또한 여러 일반 변환기가 구현됩니다. SimplePrompt
및 EmbedModel
구현자가 작업을 수행하도록 합니다.
경고
성능으로 인해 메타데이터를 추가하기 전에 청크를 수행하면 특히 3.5터보와 같은 빠른 모델의 경우 OpenAI에서 속도 제한 오류가 매우 빠르게 발생합니다. 주의하세요.
쿼리 스트림은 검색 전략으로 시작됩니다. 쿼리 파이프라인에서 Query
여러 단계를 거칩니다. 변환기와 검색기는 함께 작동하여 답변을 생성하기 전에 프롬프트에 올바른 컨텍스트를 가져옵니다. Transformer와 Retriever는 일반 상태 시스템을 통해 쿼리의 다양한 단계에서 작동합니다. 또한 검색 전략은 파이프라인 전체에 걸쳐 일반적이며 검색자는 각 전략에 대해 구체적으로 구현해야 합니다.
많은 것 같지만, tl&dr; 쿼리 파이프라인은 완전하고 강력한 형식 입니다.
또한 쿼리 파이프라인도 평가할 수 있습니다. 즉, Ragas의 것입니다.
인덱싱 파이프라인과 유사하게 각 단계는 간단한 특성에 의해 관리되며 클로저도 이러한 특성을 구현합니다.
(맨 위로)
제안된 기능(및 알려진 문제)의 전체 목록을 보려면 공개 문제를 참조하세요.
(맨 위로)
Swiftide에 더 많이 참여하고 싶거나 질문이 있거나 채팅하고 싶다면 discord에서 우리를 찾을 수 있습니다.
(맨 위로)
Swiftide는 매우 초기 단계에 있으며 더 넓은 커뮤니티를 위한 기능이 부족하다는 것을 알고 있습니다. 기여를 매우 환영합니다. ?
좋은 아이디어가 있다면 저장소를 포크하고 풀 리퀘스트를 생성해주세요. "enhancement" 태그를 사용하여 이슈를 열 수도 있습니다. 프로젝트에 별점을 주는 것을 잊지 마세요! 다시 한 번 감사드립니다!
기여하고 싶다면(축복합니다!) 이슈를 확인하거나 Discord에 가입하세요.
git checkout -b feature/AmazingFeature
)git commit -m 'feat: Add some AmazingFeature'
).git push origin feature/AmazingFeature
)자세한 내용은 기여를 참조하세요.
(맨 위로)
MIT 라이센스에 따라 배포됩니다. 자세한 내용은 LICENSE
참조하세요.
(맨 위로)