nhà phát triển-tài liệu-ai-agent
Thông thường, AI Agent được coi là một số bot có thể làm được nhiều việc và thông minh một chút. Nhưng trên thực tế, hầu hết các tác nhân phát triển hữu ích là các tác nhân chuyên biệt siêu tập trung với kiến thức riêng tư và được quản lý chặt chẽ. Ví dụ: tài liệu chính thức của ngôn ngữ lập trình hoặc có thể là tài liệu tham khảo API nội bộ của giao thức/công ty.
Gaia cung cấp ba phần cho phép bất kỳ ai tạo ra một tác nhân chuyên nghiệp như vậy mà không cần quá phức tạp. Một cơ sở kiến thức có thể cắm được, nơi bạn có thể thả các khối, một ngăn xếp trò chuyện nhận thức RAG nói theo phong cách OPENAI v1/chat/completions và các lời nhắc hệ thống mô-đun.
Một tác nhân tài liệu ngôn ngữ hợp đồng thông minh Vyper
Chúng ta hãy tiếp tục và tạo một tác nhân cho ngôn ngữ hợp đồng thông minh Vyper (một giải pháp thay thế mang hương vị Python cho Solidity). Mọi thứ bạn thấy ở đây—bố cục thư mục, lệnh nhúng, cờ cấu hình nút—đều được dịch 1-1 sang bất kỳ bộ tài liệu nào khác: chương sách Rust, tài liệu Django REST API, kho lưu trữ RFC hoặc bất kỳ tài liệu nào.
Hãy chắc chắn rằng docker của bạn đang chạy và vector qdrant
được cài đặt bằng cách chạy docker kéo qdrant/qdrant
Điều kiện tiên quyết: Công cụ bạn cài đặt một lần
WasmEdge Runtime – Tiện ích nhúng của Gaia được cung cấp dưới dạng mô-đun WebAssembly nhẹ; WasmEdge là công cụ thực thi chạy nó gốc trên Linux/macOS/Windows:
cuộn tròn -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install_v2.sh | bash -s
Tại sao lại là Wasm? Bởi vì bạn sẽ có được một hiện vật xây dựng (một tệp .wasm duy nhất) không bao giờ cần cài đặt pip. Các nhóm bảo mật thích nhị phân xác định; DevOps thích câu chuyện không phụ thuộc.
Nhúng trọng số mô hình – Mô hình tạo ra các vectơ câu 768 chiều của bạn nằm trên Hugging Face:
cuộn tròn -LO https://huggingface.co/gaianet/Nomic-embed-text-v1.5-Embedding-GGUF/resolve/main/nomic-embed-text-v1.5.f16.gguf
Các trọng số này có định dạng GGUF , phiên bản kế thừa hiện đại của GGML, truyền phát hiệu quả từ đĩa và hỗ trợ các biến thể lượng tử cho các hộp chỉ có CPU.
Chúng ta hãy tạo hai thư mục như sau qdrant_storage
và qdrant_snapshots
. Chúng ta sẽ tìm thấy cơ sở kiến thức đã chụp nhanh của mình bên trong qdrant_snapshots
.
MKDIR qdrant_storage
MKDIR qdrant_snapshots
Nohup Docker chạy -d -p 6333:6333 -p 6334:6334 \
-v $(pwd)/qdrant_storage:/qdrant/storage:z \
-v $(pwd)/qdrant_snapshots:/qdrant/snapshots:z \
QDRANT/QDRANT
Một vài lưu ý về cách thực hành tốt nhất:
- Bản đồ 6333 (REST/JSON) và 6334 (gRPC) nếu bạn nghĩ mình sẽ viết kịch bản tải lên hàng loạt hoặc chạy chuẩn mực với máy khách Rust/Go Qdrant.
- Duy trì qdrant_storage trên một ổ đĩa được gắn kết có nghĩa là các vector của bạn vẫn tồn tại sau khi khởi động lại vùng chứa và có thể được tar-gz để tạo ảnh chụp nhanh sau này.
Tạo Bộ sưu tập
Chúng tôi bắt đầu lại từ đầu vì bộ sưu tập mẫu Gaia mặc định sử dụng kích thước khác.
Hãy xóa nếu chúng ta có bất kỳ dữ liệu nào:
# Xóa bất kỳ dữ liệu cũ nào
xoăn - X XÓA BỎ 'http://localhost:6333/collections/default'
Và sau đó chạy lệnh sau.
# Provision a 768-dimensional, cosine-distance space
curl -X PUT 'http://localhost:6333/collections/default' \
-H 'Content-Type: application/json' \
--data-raw '{
"vectors": {
"size": 768,
"distance": "Cosine",
"on_disk": true
}
}'
Cờ on_disk sẽ hữu ích khi khối dữ liệu phát triển thành hàng trăm nghìn phần; Qdrant sẽ ánh xạ bộ nhớ các vectơ và để lại RAM cho LLM của bạn.
Sản xuất các nhúng
Hãy lấy CLI nhúng
cuộn tròn -LO https://github.com/GaiaNet-AI/embedding-tools/raw/main/csv_embed/csv_embed.wasm
Chuẩn bị tài liệu của bạn như
Tại sao lại chọn CSV thay vì Markdown? Tôi thấy sử dụng CSV dễ hơn markdown và tốt hơn nếu bạn dán từng phần vào các cột khác nhau và mỗi cột một ô. Thoải mái sử dụng llm_info.txt
tập tin, nếu đó là điều bạn thích.
Tôi đã sử dụng gitingest để biến kho lưu trữ git của vyper docs thành bản tóm tắt văn bản đơn giản của cơ sở mã, điều này thực sự hữu ích để đưa cơ sở mã/tài liệu vào LLM.
Tạo ra các vectơ
Hãy đảm bảo rằng tệp csv/tệp llm_info.txt nằm trong cùng một thư mục và tạo các vectơ.
wasmedge --dir .:. \
--nn-preload nhúng:GGML:AUTO:nomic-embed-text-v1.5.f16.gguf \
csv_embed.wasm nhúng mặc định 768 your_docs.csv --ctx_size 8192
- Phân tích các lá cờ:
- -dir .:. cung cấp cho sandbox wasm quyền đọc/ghi trong thư mục làm việc, do đó nó có thể truyền phát trong CSV và ghi các vectơ trở lại Qdrant.
- -nn-preload embedding:GGML:AUTO:... tải trước mô hình một lần, tiết kiệm ~2 giây cho mỗi 1.000 khối.
- ctx_size là cửa sổ mã thông báo phụ được sử dụng bên trong mô hình nhúng , không phải mô hình trò chuyện; hãy tăng kích thước nếu đoạn văn tài liệu của bạn dài và bạn thấy các phần bị cắt bớt trong nhật ký.
Bạn có thể chạy lệnh nhiều lần với --start_vector_id để thêm các phân đoạn mới mà không có xung đột; ID Qdrant là số nguyên, vì vậy hãy chọn một giá trị bù trừ như 100_000 nếu bạn có kế hoạch cập nhật tài liệu hàng quý.
Đóng gói và phân phối cơ sở kiến thức của bạn
Ảnh chụp nhanh không gì khác hơn là một thư mục các tệp JSON và Parquet mà Qdrant có thể khôi phục nguyên tử. Nén nó thường mang lại chiến thắng về kích thước 3-1 vì các vectơ có tính lặp lại cao.
cuộn tròn -X POST 'http://localhost:6333/collections/default/snapshots'
Bây giờ là lúc nén ảnh chụp nhanh, chúng ta hãy chuyển sang qdrant_snapshots/mặc định
và sau đó nén nó bằng cách chạy.
tar czvf ảnh chụp nhanh của tôi. tar . gz ảnh chụp nhanh của tôi .
Thay vì ảnh chụp nhanh của tôi
chỉ cần sử dụng tên tệp. Tải my.snapshot.tar.gz lên hugface, bạn sẽ cần có tài khoản ở đó. Bây giờ hãy nhấp vào tập dữ liệu mới và tải cơ sở kiến thức của bạn lên đó.
Một số phương pháp thực hành tốt nhất (Học theo cách khó khăn)
-
Chiến lược chia nhỏ
Mục tiêu là 200–500 token cho mỗi vector. Quá ngắn và bạn sẽ làm tràn ngập chỉ mục bằng hàng nghìn nhúng gần như giống hệt nhau (nhiễu). Quá dài và bước truy xuất sẽ trả về các khối lan rộng mà mô hình không bao giờ đọc đầy đủ.
-
Kỹ thuật nhắc nhở hệ thống
Khả năng và giới hạn của cụm từ. Ví dụ:
“Bạn là trợ lý ngôn ngữ Vyper. Nếu được hỏi những câu hỏi không phải của Vyper, hãy lịch sự từ chối bằng một câu xin lỗi. Trích dẫn số dòng mã trong mọi câu trả lời.”
-
Vòng lặp đánh giá liên tục
Chuyển các truy vấn của người dùng thực vào bảng tính, dán nhãn thủ công cho chúng là "Hữu ích/Không hữu ích" và tìm kiếm các mẫu: mọi người có yêu cầu các biện pháp bảo mật tốt nhất nhiều hơn cú pháp không? Điều đó cho bạn biết phần tài liệu nào cần các ví dụ phong phú hơn.
Sau khi tải cơ sở kiến thức lên hugingface, đã đến lúc thay đổi cơ sở kiến thức cho llm của chúng ta. Nếu bạn chưa có cơ hội chạy nút của riêng mình, bạn có thể vào đây và bắt đầu.
Nếu chúng ta muốn sử dụng một nút cụ thể, hãy đến đây và chọn một LLM phù hợp với tôi.
Sau khi cài đặt, chúng ta sẽ cần chạy lệnh sau:
cấu hình gaianet \
-- snapshot https : / / kissingface .co / datasets / meowy - ai / vyper - lang / resolve / main / default - 845259036638694 - 2025 - 04 - 22 - 09 - 28 - 18 . snapshot .tar .gz \
-- hệ thống - nhắc nhở "Bạn là một giáo viên vyper lang hữu ích, vui lòng trả lời các câu hỏi"
Ở đây --ảnh chụp nhanh https://huggingface.co/...
là liên kết tải xuống cơ sở kiến thức mà tôi đã tải lên hugingface.
Bạn sẽ thấy nội dung tương tự như sau trên thiết bị đầu cuối của mình:
[ + ] Đang cập nhật lời nhắc hệ thống của mô hình trò chuyện ...
* Lời nhắc hệ thống cũ : Bạn là một giáo viên vyper lang hữu ích , hãy trả lời các câu hỏi
* Lời nhắc hệ thống mới : Bạn là một giảng viên web3 hữu ích , vui lòng trả lời các câu hỏi
[ + ] Đang cập nhật url của ảnh chụp nhanh ...
* Url cũ : https : // embraceface.co/datasets/meowy-ai/web3-knowledge-base/resolve/main/default-8461598741381726 - 2025-04-29-07-50-41.snapshot.tar.gz
* Url mới : https : // embraceface.co/datasets/meowy-ai/vyper-lang/resolve/main/default-845259036638694 - 2025-04-22-09-28-18.snapshot.tar.gz
✅ ĐÃ HOÀN THÀNH ! Tệp .json cấu hình đã được cập nhật thành công .
Bây giờ bạn nên tiếp tục và bắt đầu nút gaia bằng cách sử dụng Gaianet bắt đầu
.
Bây giờ nút sẽ sử dụng cơ sở kiến thức vyper mà chúng tôi vừa cập nhật. Chúng tôi đã tạo thành công tác nhân tài liệu của mình.