使用 GPT4All LLM 在本地分析您的代码。下载所有必要的文件后,无需共享数据,也无需互联网连接。 Eunomia 基于 imartinez 原始 privateGPT 项目。 Eunomia 仅限于分析所提供的源代码文件并根据您的查询给出答案。
有了一个新的 Django 项目
使用 C++ 项目
法学硕士 | 下载 | 后端 | 尺寸 |
---|---|---|---|
? ggml-gpt4all-l13b-snoozy.bin | 下载 | 骆驼 | 8.0GB |
️ ggml-nous-gpt4-vicuna-13b.bin | 下载 | 骆驼 | 8.0GB |
? ggml-gpt4all-j-v1.3-groovy.bin | 下载 | 格普特吉 | 3.7GB |
郎 | 扩大 |
---|---|
Python | .py |
C++ | .cpp 和 .hpp |
爪哇 | .java 和 .jar |
JS | .js |
红宝石 | .rb |
锈 | .rs |
去 | 。去 |
斯卡拉 | .scala 和 .sc |
迅速 | 。迅速 |
PHP | .php |
乳胶 | .tex |
这里是 Langchain 语言类的源代码链接,其中包含 Langchain 目前支持的所有语言。
Eunomia 使用 Chroma 创建一个向量存储,其中包含运行目录中的文件,然后使用 langchain 将向量存储提供给您选择的 LLM。截至目前,仅支持 GPT4All 模型,因为我无法访问 ChatGPT。
首先使用以下命令将存储库克隆到文件夹中:
https://github.com/Ngz91/Eunomia.git
克隆存储库后,您需要通过运行pip install -r requirements.txt
在requirements.txt文件中安装依赖项(我建议您在Python环境中执行此操作)。
然后下载模型测试部分中受支持的模型之一,并将其保存在 Eunomia 文件夹内的文件夹中。
将example.env
重命名为.env
并适当编辑变量。
PERSIST_DIRECTORY: is the folder you want your vectorstore in
LLM: Path to your GPT4All or LlamaCpp supported LLM
BACKEND: Backend for your model (refer to models tested section)
EMBEDDINGS_MODEL_NAME: SentenceTransformers embeddings model name (see https://www.sbert.net/docs/pretrained_models.html)
MODEL_N_CTX: Maximum token limit for the LLM model
TARGET_SOURCE_CHUNKS: The amount of chunks (sources) that will be used to answer a question
IGNORE_FOLDERS: List of folders to ignore
重要提示:有两种方法可以运行 Eunomia,一种是使用python path/to/Eunomia.py arg1
,另一种是创建批处理脚本并将其放入 Python Scripts 文件夹中(在 Windows 中,它位于 UserAppDAta 下) LocalProgamsPythonPythonxxxScripts) 并直接运行eunomia arg1
。根据 Eunomia 工作原理的本质,建议您创建一个批处理脚本并在要分析代码的文件夹中运行它。您可以使用example.bat
文件作为示例来自行设置批处理文件,但请记住编辑路径python pathtoEunomia.py %1
以指向 Eunomia.py 在您的计算机中所在的路径。从现在开始我将使用批处理脚本作为示例。
激活您的 Python 环境(如果您创建了一个),移至代码所在的文件夹并提取文件以创建矢量存储,所选 LLM 将使用该矢量存储作为上下文来回答您的问题,方法是运行:
eunomia ingest
第一次运行脚本时,它将需要互联网连接来下载嵌入模型本身。再次运行摄取时,您将不需要任何互联网连接。
如果一切顺利的话你会看到类似这样的东西:
Creating new vectorstore
Loading documents from D:FolderSomeTest
Loading new documents: 100%|██████████████████████████████| 7/7 [00:00<?, ?it/s]
Loaded 7 new documents from D:Projectstests
Split into 14 chunks of text (max. 1000 tokens each)
Creating embeddings. May take some minutes...
Vectorstore created, you can now run 'eunomia start' to use the LLM to interact with your code!
创建矢量存储后,您可以通过运行以下命令来启动 Eunomia:
eunomia start
第一次需要几秒钟。一旦完成加载模型,如果模型加载成功,您将收到如下提示:
Found model file.
gptj_model_load: loading model from 'models\ggml-gpt4all-j-v1.3-groovy.bin' - please wait ...
gptj_model_load: n_vocab = 50400
gptj_model_load: n_ctx = 2048
gptj_model_load: n_embd = 4096
gptj_model_load: n_head = 16
gptj_model_load: n_layer = 28
gptj_model_load: n_rot = 64
gptj_model_load: f16 = 2
gptj_model_load: ggml ctx size = 5401.45 MB
gptj_model_load: kv self size = 896.00 MB
gptj_model_load: ................................... done
gptj_model_load: model size = 3609.38 MB / num tensors = 285
______ __ __ __ __ ______ __ __ __ ______
/ ___ / / / "-. / __ / "-./ / / __
__ _ \ -. \ / \ -./ \ \ __
_____\ _____\ _\"_\ _____\ _ _\ _\ _ _
/_____/ /_____/ /_/ /_/ /_____/ /_/ /_/ /_/ /_//_/
Enter a query:
注意:如果您在加载 LLM 时遇到错误,请确保您使用的 LLM 的后端正确。此外,有些答案可能不完整或错误。在测试时,我发现可以通过尝试不同的块大小、块重叠、n_ctx 和 target_source_chunks 来改进这一点。您可以使用其他模型来测试它们的响应是否比迄今为止测试的更好,请记住搜索如何将这些模型与 langchain 及其各自的后端一起使用。
要使用该软件,您必须安装Python 3.10或更高版本。早期版本的 Python 无法编译。
如果您在pip install
过程中构建轮子时遇到错误,您可能需要在计算机上安装 C++ 编译器。
要在 Windows 10/11 上安装 C++ 编译器,请按照以下步骤操作:
gcc
组件。 在使用 Intel 硬件(非 M1)运行 Mac 时,您可能会遇到clang: error: the clang compiler does not support '-march=native'在 pip install 过程中。
如果是这样,请在 pip 安装期间设置您的 archflags 。例如: ARCHFLAGS =“-arch x86_64”pip3 install -rrequirements.txt
这是一个测试项目,旨在验证使用 LLM 和向量嵌入进行问答的完全私有解决方案的可行性。它尚未准备好用于生产,也不适合在生产中使用。模型选择不是为了性能而优化,而是为了隐私;但可以使用不同的模型和向量存储来提高性能。