使用 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 和向量嵌入進行問答的完全私有解決方案的可行性。它尚未準備好用於生產,也不適合在生產中使用。模型選擇不是為了效能而最佳化,而是為了隱私;但可以使用不同的模型和向量儲存來提高效能。