9 个版本
0.0.10 | 2023 年 7 月 24 日 |
---|---|
0.0.9 | 2023 年 7 月 14 日 |
0.0.7 | 2023 年 6 月 30 日 |
#918 在 机器学习
每月下载 79 次
55KB
1K SLoC
头颅 - 构建机器学习应用的框架
头颅是一个框架,用于添加机器学习能力,如语义搜索系统、知识库助手等。头颅可以提供
- 开箱即用的语义搜索 ✅
- 开箱即用的知识库助手 ❔
- 多模态 [计划于 2023 年晚秋开始] ❔
- 支持图像 [计划于 2023 年晚秋开始] ❔
- 支持掩码私有数据 ❔
- 版本 1.0 中所有机器学习应用需求的单一来源 ❔
加入我们的冒险之旅
在 GitHub 上关注我们
在 Discord 上加入我们
我们很高兴从用户那里得到关于这个项目的反馈。我们还在制定项目路线图。因此,我非常希望每个人都能提供一些反馈,关于他们希望在未来的项目中看到哪些功能。如果您有任何功能或问题,请在 Discord 中告诉我们。我们将尽快回答您的问题!
如果您有时间,请在此处提供您的反馈: 头颅路线图调查
安装头颅
步骤 1:通过 cargo add cephalon
安装 cephalon。
步骤 2:安装 libtorch 库以在 Rust 中使用 Pytorch 模型。您可以在此 处 找到相关说明。
安装头颅 CLI
如果您只想玩玩 CLI 并测试它,而不想编写任何代码。您可以按照以下步骤安装 CLI:
步骤 1:安装 libtorch 库以启用在 Rust 中使用 PyTorch 模型。您可以在这里找到相关说明。
步骤 2:通过以下命令安装 cephalon CLI:cargo install cephalon
创建知识库助手
您可以使用以下工具创建语义搜索系统:
cephalon init
或
cephalon create sample-sematic-search-app
之后,将所有可能拥有的文档移动到项目目录中,然后运行
cephalon build
您可以通过输入以下查询来查询索引。
cephalon answer 'your-query-or-text'
使用 summarize 命令创建文档摘要
cephalon summarize 'path\to\your\file'
在代码库中使用 Cephalon
创建新的 Cephalon 项目
use cephalon::knowledge_base::{
Cephalon,
util
};
fn main(){
let current_dir_path:PathBuf = std::env::current_dir().unwrap();
let cephalon = Cephalon::new(current_dir_path, false, "".to_string());
}
这将创建项目目录中的 .cephalon 目录。所有与 Cephalon 相关的数据都将保存在那里。
扫描文件和构建索引和数据库
use cephalon::knowledge_base::{
Cephalon,
util
};
fn main(){
let current_dir_path:PathBuf = std::env::current_dir().unwrap();
//Load and existing cephalon project
let cephalon_semantic_search = Cephalon::load(current_dir_path.clone());
//Point to the directory where the files are located.
cephalon_knowledge_base.search_and_build_index(¤t_dir_path);
}
这将扫描给定目录中的所有文件。然后,如果文件类型由程序支持,它将从中提取文本,将其分成 256 字符的块,并将其保存在 Cephalon 数据库中。它还将通过句子嵌入模型为这些文件创建嵌入,然后将它们上传到索引并保存在 .cephalon 目录中。目前,文件需要与 .cephalon 目录在同一目录中。然而,将来它将允许您从任何路径索引任何文件或目录。
搜索特定文本
use cephalon::knowledge_base::{
Cephalon,
util
};
fn main(){
let current_dir_path:PathBuf = std::env::current_dir().unwrap();
//Load a cephalon that is already built.
let cephalon_semantic_search = Cephalon::load(current_dir_path.clone());
//Search the Index and database for results
let matches: Vec<Matches> = cephalon_semantic_search.search(current_dir_path, query.query,5).unwrap();
//Iterate through matches and print them
for search_result in matches{
println!("{}, {:?}",search_result.document_name, search_result.line);
}
}
Cephalon 内部结构
Cephalon-rs 是 Cephalon 的基础版本,完全用 Rust 编写。它还使用了其他库,如 serde、rayon、rust-bert、pdf-extract、minidom 和 zip。它还使用 clap 为 Rust 创建 CLI。对于索引,它使用 HNSW 索引和 hora-search 的默认设置。
支持的文件类型
- PDF (.pdf) ✅
- Word 文档 (.docx) ✅
- 文本 (.txt) ✅
- JSON [计划于 2023 年晚秋发布] ❔
依赖项
~70MB
~1M SLoC