關於該項目
我們部落格上的最新更新
例子
想像
特徵
入門
用法和概念
路線圖
貢獻
執照
在使用其他基於 Python 的工具時,效能、穩定性和易用性方面出現了一些問題。於是,Swiftide誕生了。 Swiftide 的目標是提供一個成熟的檢索增強生成庫,快速、易於使用、可靠且易於擴展。
bosun.ai 計畫的一部分。即將推出的自主程式碼改進平台。
我們<3回饋:非常歡迎專案想法、建議和投訴。請隨時提出問題或就不和諧問題與我們聯繫。
很好的起點是本自述文件、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
tracing
以獲取更多資訊。特徵 | 細節 |
---|---|
支援的大型語言模型提供商 | OpenAI(和 Azure)- 所有模型和嵌入 AWS Bedrock - Anthropic 和 Titan Groq - 所有型號 奧拉馬 - 所有型號 |
載入數據 | 文件 刮痧 弗盧維奧 實木複合地板 其他管道和流 |
轉換器和元資料生成 | 為文字和程式碼產生問題和答案 (Hyde) 透過法學碩士的摘要、標題和查詢 使用 Tree-sitter 提取定義和參考 |
分割和分塊 | 降價 文字(text_splitter) 代碼(與樹保姆) |
貯存 | 奎德蘭特 雷迪斯 蘭斯資料庫 |
查詢管道 | 相似性和混合搜尋、查詢和回應轉換以及評估 |
(回到頂部)
確保您安裝了 Rust 工具鏈。 rustup 是推薦的方法。
要使用 OpenAI,需要 API 金鑰。請注意,預設情況下async_openai
使用OPENAI_API_KEY
環境變數。
其他整合可能有自己的要求。
設定一個新的 Rust 項目
添加迅捷
cargo add swiftide
啟用您想要在Cargo.toml
中使用的整合功能
編寫管道(請參閱我們的範例和文件)
(回到頂部)
在建置流程之前,您需要啟用並配置所需的任何整合。請參閱/範例。
我們有很多例子,請參考 /examples 和文檔
筆記
預設不啟用任何集成,因為有些集成程式碼量很大。我們建議您挑選您需要的整合。按照約定,標誌與其代表的整合具有相同的名稱。
索引流以發出節點的載入器開始。例如,對於 Fileloader,每個檔案都是一個 Node。
然後,您可以對節點進行切片、切塊、擴充和過濾。管道中的每種不同類型的步驟都需要不同的特徵。這使得擴展成為可能。
節點有路徑、區塊和元資料。目前,元資料在分塊時被複製,並在使用 OpenAIEmbed 轉換器時始終嵌入。
(impl Loader)
流的起點,建立並發出 Node(impl NodeCache)
過濾快取節點(impl Transformer)
轉換節點並將其放入流中(impl BatchTransformer)
轉換多個節點並將它們放到流上(impl ChunkerTransformer)
轉換單一節點並發出多個節點(impl Storage)
將節點儲存在儲存後端,這可以連結起來此外,還實現了幾個通用變壓器。他們讓SimplePrompt
和EmbedModel
的實作者來做他們的事情。
警告
由於效能原因,在新增元資料之前進行分塊會導致 OpenAI 上的速率限制錯誤非常快,尤其是對於 3.5-turbo 等更快的模型。請注意。
查詢流以搜尋策略開始。在查詢管道中, 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
以了解更多資訊。
(回到頂部)