Cửa hàng Vector

Hướng dẫn này sẽ giúp bạn hiểu cách sử dụng Rememberizer Vector Store như một nhà phát triển.

Cửa hàng Vector của Rememberizer đơn giản hóa quy trình xử lý dữ liệu vector, cho phép bạn tập trung vào đầu vào văn bản và tận dụng sức mạnh của các vector cho nhiều ứng dụng như tìm kiếm và phân tích dữ liệu.

Giới thiệu

Rememberizer Vector Store cung cấp một giao diện dễ sử dụng để xử lý dữ liệu vector trong khi trừu tượng hóa sự phức tạp của các vector embeddings. Được hỗ trợ bởi PostgreSQL với phần mở rộng pgvector, Rememberizer Vector Store cho phép bạn làm việc trực tiếp với văn bản. Dịch vụ này xử lý việc chia nhỏ, vector hóa và lưu trữ dữ liệu văn bản, giúp bạn dễ dàng tập trung vào logic ứng dụng cốt lõi của mình.

Để hiểu sâu hơn về các khái niệm lý thuyết đằng sau vector embeddings và cơ sở dữ liệu vector, hãy xem Vector Embeddings và Cơ sở dữ liệu Vector là gì?.

Tổng Quan Kỹ Thuật

Cách Các Kho Vector Hoạt Động

Kho Vector Rememberizer chuyển đổi văn bản thành các đại diện vector nhiều chiều (nhúng) nắm bắt ý nghĩa ngữ nghĩa. Điều này cho phép:

  1. Tìm Kiếm Ngữ Nghĩa: Tìm tài liệu dựa trên ý nghĩa thay vì chỉ từ khóa

  2. Khớp Tương Tự: Xác định nội dung có liên quan về mặt khái niệm

  3. Truy Xuất Hiệu Quả: Nhanh chóng xác định thông tin liên quan từ các tập dữ liệu lớn

Các Thành Phần Chính

  • Xử Lý Tài Liệu: Văn bản được chia thành các đoạn có kích thước tối ưu với các ranh giới chồng chéo để bảo tồn ngữ cảnh

  • Chuyển Đổi Thành Vector: Các đoạn được chuyển đổi thành các nhúng bằng cách sử dụng các mô hình tiên tiến nhất

  • Lập Chỉ Mục: Các thuật toán chuyên biệt tổ chức các vector để tìm kiếm độ tương đồng hiệu quả

  • Xử Lý Truy Vấn: Các truy vấn tìm kiếm được chuyển đổi thành vector và so sánh với các nhúng đã lưu trữ

Kiến trúc

Rememberizer triển khai các kho vector sử dụng:

  • PostgreSQL với phần mở rộng pgvector: Để lưu trữ và tìm kiếm vector hiệu quả

  • Tổ chức dựa trên bộ sưu tập: Mỗi kho vector có bộ sưu tập riêng biệt

  • Truy cập dựa trên API: Các điểm cuối RESTful đơn giản cho tất cả các thao tác

Bắt đầu

Tạo một Cửa Hàng Vector

  1. Điều hướng đến phần Cửa Hàng Vector trong bảng điều khiển của bạn

  2. Nhấp vào "Tạo cửa hàng vector mới":

    • Một biểu mẫu sẽ xuất hiện yêu cầu bạn nhập chi tiết.

  3. Điền vào các Chi tiết:

    • Tên: Cung cấp một tên duy nhất cho cửa hàng vector của bạn.

    • Mô tả: Viết một mô tả ngắn gọn về cửa hàng vector.

    • Mô hình Nhúng: Chọn mô hình chuyển đổi văn bản thành vector.

    • Thuật toán Lập chỉ mục: Chọn cách tổ chức các vector để tìm kiếm.

    • Chỉ số Tìm kiếm: Định nghĩa cách tính toán độ tương đồng giữa các vector.

    • Kích thước Vector: Kích thước của các nhúng vector (thường là 768-1536).

  4. Gửi Biểu mẫu:

    • Nhấp vào nút "Tạo". Bạn sẽ nhận được thông báo thành công, và cửa hàng mới sẽ xuất hiện trong danh sách cửa hàng vector của bạn.

Tùy Chọn Cấu Hình

Các Mô Hình Nhúng

Mô Hình
Kích Thước
Mô Tả
Tốt Nhất Cho

openai/text-embedding-3-large

1536

Mô hình nhúng chính xác cao từ OpenAI

Các ứng dụng sản xuất yêu cầu độ chính xác tối đa

openai/text-embedding-3-small

1536

Mô hình nhúng nhỏ hơn, nhanh hơn từ OpenAI

Các ứng dụng có yêu cầu thông lượng cao hơn

Thuật Toán Lập Chỉ Mục

Thuật Toán
Mô Tả
Đánh Đổi

IVFFLAT (mặc định)

Tệp đảo ngược với nén phẳng

Cân bằng tốt giữa tốc độ và độ chính xác; hoạt động tốt cho hầu hết các tập dữ liệu

HNSW

Thế Giới Nhỏ Có Thể Điều Hướng Theo Cấp Bậc

Độ chính xác tốt hơn cho các tập dữ liệu lớn; yêu cầu bộ nhớ cao hơn

Các chỉ số tìm kiếm

Chỉ số
Mô tả
Tốt nhất cho

cosine (mặc định)

Đo góc giữa các vector

So khớp độ tương đồng mục đích chung

inner product (ip)

Tích vô hướng giữa các vector

Khi độ lớn của vector là quan trọng

L2 (Euclidean)

Khoảng cách đường thẳng giữa các vector

Khi các mối quan hệ không gian quan trọng

Quản lý Cửa hàng Vector

  1. Xem và Chỉnh sửa Cửa hàng Vector:

    • Truy cập bảng điều khiển quản lý để xem, chỉnh sửa hoặc xóa cửa hàng vector.

  2. Xem Tài liệu:

    • Duyệt qua các tài liệu riêng lẻ và siêu dữ liệu liên quan của chúng trong một cửa hàng vector cụ thể.

  3. Thống kê:

    • Xem thống kê chi tiết như số lượng vector được lưu trữ, hiệu suất truy vấn và các chỉ số hoạt động.

Quản lý Khóa API

Các khóa API được sử dụng để xác thực và ủy quyền truy cập vào các điểm cuối API của Rememberizer Vector Store. Quản lý đúng cách các khóa API là rất quan trọng để duy trì sự an toàn và toàn vẹn của các kho vector của bạn.

Tạo Khóa API

  1. Truy cập trang chi tiết Vector Store của bạn

  2. Điều hướng đến Phần Quản lý Khóa API:

    • Nó có thể được tìm thấy trong tab "Cấu hình"

  3. Nhấp vào "Thêm Khóa API":

    • Một biểu mẫu sẽ xuất hiện yêu cầu bạn nhập chi tiết.

  4. Điền Thông Tin:

    • Tên: Cung cấp một tên cho khóa API để giúp bạn xác định trường hợp sử dụng của nó.

  5. Gửi Biểu Mẫu:

    • Nhấp vào nút "Tạo". Khóa API mới sẽ được tạo ra và hiển thị. Hãy chắc chắn sao chép và lưu trữ nó một cách an toàn. Khóa này được sử dụng để xác thực các yêu cầu đến cửa hàng vector cụ thể đó.

Thu hồi khóa API

Nếu một khóa API không còn cần thiết, bạn có thể xóa nó để ngăn chặn bất kỳ sự lạm dụng tiềm ẩn nào.

Vì lý do bảo mật, bạn có thể muốn thay đổi khóa API của mình định kỳ. Điều này bao gồm việc tạo một khóa mới và thu hồi khóa cũ.

Sử dụng API Vector Store

Sau khi tạo một Vector Store và tạo một khóa API, bạn có thể tương tác với nó bằng cách sử dụng REST API.

Ví dụ Mã

import requests
import json

API_KEY = "your_api_key_here"
VECTOR_STORE_ID = "vs_abc123"  # Thay thế bằng ID kho vector của bạn
BASE_URL = "https://api.rememberizer.a

# Tải lên một tài liệu vào kho vector
def upload_document(file_path, document_name=None):
    if document_name is None:
        document_name = file_path.split("/")[-1]
    
    with open(file_path, "rb") as f:
        files = {"file": (document_name, f)}
        headers = {"x-api-key": API_KEY}
        
        response = requests.post(
            f"{BASE_URL}/vector-stores/{VECTOR_STORE_ID}/documents",
            headers=headers,
            files=files
        )
        
        if response.status_code == 201:
            print(f"Tài liệu '{document_name}' đã được tải lên thành công!")
            return response.json()
        else:
            print(f"Lỗi khi tải lên tài liệu: {response.text}")
            return None

# Tải nội dung văn bản lên kho vector
def upload_text(content, document_name):
    headers = {
        "x-api-key": API_KEY,
        "Content-Type": "application/json"
    }
    
    data = {
        "name": document_name,
        "content": content
    }
    
    response = requests.post(
        f"{BASE_URL}/vector-stores/{VECTOR_STORE_ID}/documents/text",
        headers=headers,
        json=data
    )
    
    if response.status_code == 201:
        print(f"Tài liệu văn bản '{document_name}' đã được tải lên thành công!")
        return response.json()
    else:
        print(f"Lỗi khi tải lên văn bản: {response.text}")
        return None

# Tìm kiếm kho vector
def search_vector_store(query, num_results=5, prev_chunks=1, next_chunks=1):
    headers = {"x-api-key": API_KEY}
    
    params = {
        "q": query,
        "n": num_results,
        "prev_chunks": prev_chunks,
        "next_chunks": next_chunks
    }
    
    response = requests.get(
        f"{BASE_URL}/vector-stores/{VECTOR_STORE_ID}/documents/search",
        headers=headers,
        params=params
    )
    
    if response.status_code == 200:
        results = response.json()
        print(f"Đã tìm thấy {len(results['matched_chunks'])} kết quả cho '{query}'")
        
        # In kết quả hàng đầu
        if results['matched_chunks']:
            top_match = results['matched_chunks'][0]
            print(f"Kết quả hàng đầu (khoảng cách: {top_match['distance']}):")
            print(f"Tài liệu: {top_match['document']['name']}")
            print(f"Nội dung: {top_match['matched_content']}")
        
        return results
    else:
        print(f"Lỗi khi tìm kiếm: {response.text}")
        return None

# Ví dụ sử dụng
# tải_tài_liệu("đường/dẫn/đến/tài_liệu.pdf")
# upload_text("Đây là một đoạn văn bản mẫu để được vector hóa", "sample-document.txt")
# search_vector_store("Cách hoạt động của độ tương đồng vector?")

Thực Hành Tốt Nhất Khi Di Chuyển

Hãy làm theo những khuyến nghị này để có một quá trình di chuyển thành công:

  1. Lập Kế Hoạch Trước:

    • Ước lượng khối lượng dữ liệu và thời gian cần thiết cho việc di chuyển

    • Lên lịch di chuyển trong các khoảng thời gian có lưu lượng thấp

    • Tăng dung lượng ổ đĩa trước khi bắt đầu các cuộc di chuyển lớn

  2. Kiểm Tra Trước:

    • Tạo một cửa hàng vector thử nghiệm trong Rememberizer

    • Di chuyển một tập hợp dữ liệu nhỏ (100-1000 vector)

    • Xác minh chức năng tìm kiếm với các truy vấn chính

  3. Xác Thực Dữ Liệu:

    • So sánh số lượng tài liệu trước và sau khi di chuyển

    • Chạy các truy vấn chuẩn để đảm bảo kết quả tương tự

    • Xác thực rằng siêu dữ liệu được bảo tồn chính xác

  4. Tối Ưu Hiệu Suất:

    • Sử dụng các thao tác theo lô để tăng hiệu quả

    • Cân nhắc việc đặt địa lý của cơ sở dữ liệu nguồn và đích

    • Giám sát giới hạn tỷ lệ API và điều chỉnh kích thước lô cho phù hợp

  5. Các Bước Sau Khi Di Chuyển:

    • Xác minh việc tạo chỉ mục trong Rememberizer

    • Cập nhật cấu hình ứng dụng để trỏ đến cửa hàng vector mới

    • Giữ cơ sở dữ liệu nguồn như một bản sao lưu cho đến khi việc di chuyển được xác minh

Để tham khảo chi tiết về API và tài liệu điểm cuối, hãy truy cập trang API Cửa hàng Vector.


Hãy chắc chắn xử lý các khóa API một cách an toàn và tuân theo các thực hành tốt nhất cho việc quản lý khóa API.

Last updated