Xây dựng hệ thống RAG cục bộ với 3 bước đơn giản

Mục lục

  1. Giới thiệu
  2. Bước 1: Ollama - Quản lý mô hình
  3. Bước 2: Llama 3 - Mô hình ngôn ngữ
  4. Bước 3: LlamaIndex - Khung RAG
  5. Kết luận

Giới thiệu

Bạn muốn có một hệ thống RAG cục bộ với thao tác tối thiểu? Bạn có một lượng tài liệu khổng lồ muốn biến thành cơ sở kiến thức để tăng cường cho mô hình ngôn ngữ? Hay bạn muốn xây dựng một chatbot biết về những gì bạn muốn nó biết?

Bài viết này sẽ hướng dẫn bạn cách dễ nhất để thực hiện điều đó. Hệ thống này có thể không phải là tối ưu nhất về tốc độ suy luận, độ chính xác vector hoặc khả năng lưu trữ, nhưng nó rất đơn giản. Bạn có thể tùy chỉnh nó nếu muốn, nhưng ngay cả khi không, những gì chúng ta làm trong hướng dẫn ngắn này sẽ giúp hệ thống RAG cục bộ của bạn hoạt động đầy đủ. Và vì chúng ta sẽ sử dụng Llama 3, chúng ta cũng có thể hy vọng đạt được kết quả tuyệt vời.

Bước 1: Ollama - Quản lý mô hình

Ollama có thể được sử dụng để quản lý và tương tác với các mô hình ngôn ngữ. Hôm nay, chúng ta sẽ sử dụng nó cho cả quản lý mô hình và tương tác gián tiếp, vì LlamaIndex có khả năng tương tác trực tiếp với các mô hình do Ollama quản lý. Điều này sẽ làm cho quá trình tổng thể của chúng ta dễ dàng hơn.

Bạn có thể cài đặt Ollama bằng cách làm theo hướng dẫn cụ thể cho hệ thống của mình trên kho lưu trữ GitHub của ứng dụng. Sau khi cài đặt, bạn có thể khởi chạy Ollama từ thiết bị đầu cuối và chỉ định mô hình bạn muốn sử dụng.

Bước 2: Llama 3 - Mô hình ngôn ngữ

Sau khi Ollama được cài đặt và hoạt động, bạn có thể tải xuống bất kỳ mô hình nào được liệt kê trong kho lưu trữ GitHub của nó hoặc tạo mô hình tương thích với Ollama từ các triển khai mô hình ngôn ngữ hiện có khác. Sử dụng lệnh chạy Ollama sẽ tải xuống mô hình đã chỉ định nếu nó không có trên hệ thống của bạn, vì vậy việc tải xuống Llama 3 8B có thể được thực hiện với dòng lệnh sau:

nollama run llama3

Hãy chắc chắn rằng bạn có đủ dung lượng lưu trữ cục bộ để chứa tệp tải xuống 4,7 GB. Sau khi ứng dụng thiết bị đầu cuối Ollama khởi động với mô hình Llama 3 làm nền tảng, bạn có thể thu nhỏ nó lại. Chúng ta sẽ sử dụng LlamaIndex từ tập lệnh của riêng mình để tương tác.

Bước 3: LlamaIndex - Khung RAG

Phần cuối cùng của câu đố là LlamaIndex, khung RAG của chúng ta. Để sử dụng LlamaIndex, bạn cần đảm bảo rằng nó đã được cài đặt trên hệ thống của mình. Vì gói và không gian tên LlamaIndex đã có những thay đổi gần đây, tốt nhất là kiểm tra tài liệu chính thức để cài đặt LlamaIndex vào môi trường cục bộ của bạn.

Sau khi hoạt động, và với Ollama đang chạy với mô hình Llama3 được kích hoạt, bạn có thể lưu đoạn mã sau vào tệp (đã được sửa đổi từ đây):

from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from llama_index.llms.ollama import Ollama

# Tài liệu cục bộ của tôi
documents = SimpleDirectoryReader(data).load_data()

# Mô hình nhúng
Settings.embed_model = HuggingFaceEmbedding(model_name=BAAI/bge-base-en-v1.5)

# Mô hình ngôn ngữ
Settings.llm = Ollama(model=llama3, request_timeout=360.0)

# Tạo chỉ mục
index = VectorStoreIndex.from_documents(documents)

# Thực hiện truy vấn RAG
query_engine = index.as_query_engine()
response = query_engine.query(What are the 5 stages of RAG?)
print(response)

Tập lệnh này thực hiện những điều sau:

  • Các tài liệu được lưu trữ trong thư mục dữ liệu
  • Mô hình nhúng được sử dụng để tạo nhúng tài liệu RAG của bạn là biến thể BGE từ Hugging Face
  • Mô hình ngôn ngữ là Llama 3 được đề cập ở trên, được truy cập qua Ollama
  • Truy vấn được đặt cho dữ liệu của chúng ta (What are the 5 stages of RAG?) phù hợp vì tôi đã đặt một số tài liệu liên quan đến RAG vào thư mục dữ liệu
  • Và đầu ra của truy vấn của chúng ta:
    The five key stages within RAG are: Loading, Indexing, Storing, Querying, and Evaluation.

Lưu ý rằng chúng ta có thể muốn tối ưu hóa tập lệnh theo một số cách để tạo điều kiện cho tìm kiếm nhanh hơn và duy trì một số trạng thái (ví dụ: nhúng), nhưng tôi sẽ để phần đó cho người đọc quan tâm khám phá.

Kết luận

Chúng ta đã làm được. Chúng ta đã quản lý để có được một ứng dụng RAG dựa trên LlamaIndex sử dụng Llama 3 được phục vụ bởi Ollama cục bộ trong 3 bước khá dễ dàng. Bạn có thể làm nhiều hơn với điều này, bao gồm tối ưu hóa, mở rộng, thêm giao diện người dùng, v.v., nhưng thực tế đơn giản là chúng ta đã có thể xây dựng mô hình cơ bản của mình chỉ với một vài dòng mã trên một tập hợp tối thiểu các ứng dụng và thư viện hỗ trợ.

Tôi hy vọng bạn thích quá trình này.

Logo

0 comments Blogger 0 Facebook

Đăng nhận xét

 
Agent.ai.vn © 2024 - Nắm bắt tương lai
Top