Swiftide 使用教程
1. 项目介绍
Swiftide 是一个使用 Rust 语言编写的库,用于构建大型语言模型(LLM)应用。它支持快速的数据摄入、转换和索引,以便进行有效的查询和提示注入,这种技术被称为检索增强生成(Retrieval Augmented Generation)。Swiftide 提供了灵活的构建块,可以用来创建各种类型的代理,从而实现从概念到生产的快速开发。
2. 项目快速启动
在开始之前,请确保已经安装了 Rust 工具链。以下是一个简单的项目启动指南。
首先,创建一个新的 Rust 项目:
cargo new my_swiftide_project
cd my_swiftide_project
接下来,将 Swiftide 添加到 Cargo.toml
文件中:
[dependencies]
swiftide = "0.16.0" # 使用最新版本
然后,编写一个简单的索引管道示例:
use swiftide::prelude::*;
fn main() {
let pipeline = Pipeline::from_loader(FileLoader::new(".")?)
.filter_cached(Redis::try_from_url("redis://localhost:6379", "my_cache")?)
.then_chunk(ChunkCode::try_for_language("rust", 10..2048)?)
.then(MetadataQACode::default())
.then_in_batch(Embed::new())
.then_store_with(Qdrant::builder().batch_size(50).vector_size(1536).build()?)
.run()
.await;
println!("Pipeline has been executed successfully.");
}
确保替换 redis://localhost:6379
为你的 Redis 服务器地址。
3. 应用案例和最佳实践
以下是使用 Swiftide 的几个应用案例和最佳实践:
索引本地代码项目
// ... 使用上面快速启动中的代码作为索引管道的基础
查询管道示例
// 创建一个查询管道
let query_pipeline = Pipeline::default()
.then_transform_query(GenerateSubquestions::from_client(client.clone()))
.then_transform_query(Embed::from_client(client.clone()))
.then_retrieve(qdrant.clone())
.then_answer(Simple::from_client(client));
// 执行查询
let query = "How can I use the query pipeline in Swiftide?";
query_pipeline.query(query).await?;
运行一个可以搜索代码的代理
// 创建一个代理
let agent = agents::Agent::builder()
.llm(&openai)
.tools(vec![search_code()])
.build()?;
// 使用代理进行查询
agent.query("In what file can I find an example of a swiftide agent?").await?;
4. 典型生态项目
Swiftide 是 bosun.ai 项目的一部分,旨在为自动化 AI 应用程序的进一步开发提供一个快速、可扩展的平台。在 Swiftide 生态系统中,有几个典型的项目可以帮助开发者:
- OpenAI: 集成 OpenAI 模型进行文本生成和嵌入。
- Groq: 集成 Groq 模型,提供高效的文本搜索和嵌入。
- Redis: 用于缓存的 Redis 集成。
- Qdrant: 用于向量搜索的 Qdrant 集成。
通过使用这些集成,开发者可以构建功能丰富的 LLM 应用程序。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考