#机器学习 #应用程序 #框架 #自然语言处理 #计算机视觉 #向量数据库 #搜索索引

bin+lib cephalon

一个用于从文档中提取信息并将其输入到向量数据库以创建强大知识库助手的库

9 个版本

0.0.10 2023 年 7 月 24 日
0.0.9 2023 年 7 月 14 日
0.0.7 2023 年 6 月 30 日

#918机器学习

Download history 6/week @ 2024-03-09 1/week @ 2024-03-16 25/week @ 2024-03-30 10/week @ 2024-04-06

每月下载 79

MIT 许可证

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(&current_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