Đơn vị 2 / 11

Nhúng và logic cơ sở dữ liệu vector

Lợi nhuận:

  • Hiểu rằng việc nhúng biến văn bản thành một vectơ trong không gian ngữ nghĩa và các ý nghĩa tương tự là các vectơ gần
  • Giải thích cách hoạt động của tìm kiếm ANN với các số liệu về độ tương tự cosine và dấu chấm
  • Chọn cơ sở dữ liệu vectơ phổ biến dựa trên chi phí, quy mô và nhu cầu lọc siêu dữ liệu

Trọng tâm của RAG là một câu hỏi duy nhất: "Đoạn văn bản nào giống với câu hỏi của người dùng nhất?" Máy tính xử lý văn bản bằng số, không phải theo nghĩa đen. Đó là lý do tại sao trước tiên chúng ta cần chuyển văn bản thành những con số mang ý nghĩa của nó. Đó chính là nhúng: quá trình chuyển đổi một văn bản thành một chuỗi số (vectơ) thể hiện ý nghĩa của văn bản đó. Khi hoàn thành bài này, bạn sẽ biết cách nhúng hoạt động, cách đo độ tương tự và cách chọn cơ sở dữ liệu vectơ phù hợp.

Nhúng: Dịch ý nghĩa thành tọa độ

Một mô hình nhúng (trí tuệ nhân tạo được đào tạo đặc biệt) chuyển đổi văn bản bạn cung cấp thành một vectơ, chẳng hạn như 1024 số. Hãy coi vectơ này như tọa độ trong không gian đa chiều. Điều kỳ diệu là thế này: các văn bản có ý nghĩa tương tự sẽ rơi vào tọa độ gần nhau trong không gian này.

Một ví dụ đơn giản: “nghỉ phép hàng năm”, “quyền nghỉ phép” và “nghỉ phép có lương hàng năm” sử dụng các từ khác nhau nhưng có nghĩa giống nhau - vectơ của chúng gần nhau. “Tài khoản tiền lương” là một vấn đề khác - vectơ của nó rất xa. Vì vậy, người dùng hỏi "tôi có bao nhiêu ngày nghỉ phép?" Khi bạn hỏi, chúng tôi thậm chí có thể tìm thấy một tài liệu không chứa từ "nghỉ lễ" mà ghi "nghỉ phép hàng năm là 14 ngày". Đây là điều mà tìm kiếm từ khóa cổ điển (tìm kiếm khớp chính xác với từ) không thể làm được.

Mẹo: Hãy coi việc nhúng như một “dấu ấn ý nghĩa”. Dấu vân tay của hai câu giống nhau có vẻ giống nhau; Ngay cả khi các từ có khác nhau.

Một quy tắc quan trọng: mô hình bạn sử dụng khi nhúng câu hỏi phải giống với mô hình bạn sử dụng khi nhúng tài liệu. Các mô hình khác nhau tạo ra những không gian khác nhau; tọa độ trở nên không thể so sánh được.

Làm thế nào để đo lường sự tương đồng?

Có một số phương pháp để đo mức độ giống nhau của hai vectơ. Phổ biến nhất là độ tương tự cosin: nó đo góc giữa hai vectơ. Nếu góc nhỏ (các vectơ cùng hướng) thì độ tương tự cao. Giá trị nằm trong khoảng −1 đến 1; Gần 1 = rất giống nhau.

tiêu chí

Nó đo lường cái gì?

Khi nào nó được ưa thích?

cosin

Góc (hướng) giữa các vectơ

Phổ biến nhất; mặc định trong văn bản tương tự về ngữ nghĩa

Sản phẩm chấm

Hướng + độ lớn cùng nhau

Nếu các vectơ được chuẩn hóa, nó cho kết quả tương tự như cosin; nhanh

Euclide (khoảng cách Euclide)

Khoảng cách thẳng giữa các tọa độ

Trong một số kịch bản phân cụm; ít được sử dụng trong văn bản

Trong thực tế, hầu hết các mô hình nhúng đều tạo ra các vectơ chuẩn hóa (kích thước được đặt thành 1); Trong trường hợp này, tích cosin và tích số chấm có cùng thứ tự. Đừng bị tê liệt vì quyết định: hãy bắt đầu với cosine.

Trong số hàng triệu vectơ, việc so sánh từng vectơ một rất chậm. Đó là lý do tại sao cơ sở dữ liệu vectơ sử dụng thuật toán ANN (Hàng xóm gần nhất). ANN tìm thấy "gần như chính xác gần nhất" thay vì "gần chính xác nhất" rất nhanh. Ví dụ: phương thức có tên HNSW có thể trả về kết quả sau vài mili giây ngay cả đối với 10 triệu vectơ. Bạn đạt được tốc độ tuyệt vời cho một sự hy sinh nhỏ về độ chính xác.

Cơ sở dữ liệu Vector làm gì?

Cơ sở dữ liệu vectơ thực hiện ba việc cùng một lúc: (1) lưu trữ vectơ, (2) nhanh chóng tìm thấy các vectơ giống nhất với vectơ truy vấn, (3) lọc theo siêu dữ liệu bên cạnh mỗi vectơ. Siêu dữ liệu là các thẻ bạn đính kèm vào phần đó: tệp nguồn, ngày tháng, bộ phận, mức độ riêng tư, v.v. Lọc siêu dữ liệu là rất quan trọng trong RAG doanh nghiệp; bởi vì bạn cần có khả năng đặt ra các hạn chế như "chỉ tìm kiếm trong các tài liệu năm 2025 của Bộ Tài chính".

# Đăng ký cơ sở dữ liệu vectơ (khái niệm)vektor_db.add( id="izin-politikasi-parca-3", vektor=embed("Nghỉ phép có lương hàng năm là 14 ngày..."), text="Nghỉ phép có lương hàng năm là 14 ngày...", metadata={"source": "ik_el_kitabi.pdf", "bộ phận": "IK", "date": "2025-06", "privacy": "ic"})

# Tìm kiếm được lọc siêu dữ liệu (khái niệm)result = vektor_db.search( vektor=embed("tôi có bao nhiêu ngày nghỉ phép?"), top_k=4, filter={"department": "HR", "privacy": ["internal", "on"]})

Chọn cơ sở dữ liệu phù hợp

xe cộ

Khía cạnh nổi bật

Tình huống thích hợp

Tích hợp/dựa trên tệp (thư viện nhúng)

Không cần cài đặt, máy đơn

Nguyên mẫu, bộ nhỏ (< vài trăm nghìn bộ phận)

Dịch vụ đám mây được quản lý

Mở rộng quy mô và bảo trì không phải là trách nhiệm của bạn

Sản xuất, dữ liệu tăng trưởng nhanh, nhóm nhỏ

Nguồn mở trên máy chủ của riêng bạn

Toàn quyền kiểm soát, dữ liệu của bạn vẫn là của bạn

Nghĩa vụ bảo mật, cơ sở hạ tầng hiện có

Bổ sung vào cơ sở dữ liệu hiện có

Bạn không quản lý các hệ thống riêng biệt

Thêm hỗ trợ vectơ vào DB bạn đã sử dụng

Hỏi khi chọn: Sẽ có bao nhiêu miếng? Việc lọc siêu dữ liệu quan trọng đến mức nào? Dữ liệu có thể đi ra ngoài công ty (bảo mật) không? Nhóm có thể vận hành cơ sở hạ tầng không? Sẽ là khôn ngoan khi bắt đầu từ quy mô nhỏ và mở rộng khi cần thiết.

Cách tiếp cận yếu / Cách tiếp cận mạnh mẽ

Yếu (lưu trữ nhúng đơn giản, không có siêu dữ liệu):

Chỉ cần lưu văn bản và vector. Tìm kiếm: trả về 4 vectơ giống nhau nhất. # Vấn đề: không thể lọc như "chỉ các tài liệu nhân sự hiện tại";# phần cũ/trái phép cũng có thể được đưa vào phản hồi.

Mạnh mẽ (siêu dữ liệu phong phú + tìm kiếm được lọc):

Thêm thẻ nguồn, ngày tháng, bộ phận và quyền riêng tư vào mỗi phần. Lọc theo quyền hạn và tính hiện tại của người dùng trong quá trình tìm kiếm: filter = {"privacy": user_authority, "date_date": "2024-01"}# Như vậy, kết quả vừa an toàn vừa cập nhật.

Ba hộp nhỏ

Trường hợp 1 - Kết hợp mô hình sai. Một nhóm đã nhúng tài liệu với mô hình A và các câu hỏi với mô hình B. Các tìm kiếm trả về kết quả vô nghĩa và tỷ lệ trả lời đúng vẫn ở mức 31%. Khi tôi chuyển sang một mô hình duy nhất (cả hai mô hình nhúng giống nhau), tỷ lệ tăng lên 88%. Bài học: câu hỏi và tài liệu phải ở trong cùng một không gian.

Trường hợp 2 - Rủi ro về quyền riêng tư khi không có siêu dữ liệu. Trong một công ty chăm sóc sức khỏe, tất cả tài liệu của bộ phận được đưa vào một nhóm duy nhất mà không có siêu dữ liệu. Khi nhân viên bán hàng đặt câu hỏi, hệ thống sẽ bối cảnh hóa một phần dữ liệu bệnh nhân. Khi siêu dữ liệu + bộ lọc được thêm vào (theo cấp độ ủy quyền), rủi ro này đã được loại bỏ; Khi truy xuất, 12 mảnh trái phép hoàn toàn không được mang theo.

Trường hợp 3 - Nút thắt quy mô. Một công ty thương mại điện tử đã tìm kiếm 8 triệu mô tả sản phẩm bằng phương pháp "quét tất cả" đơn giản; Mỗi truy vấn mất 6 giây. Khi chúng tôi chuyển sang ANN dựa trên HNSW, thời gian giảm xuống còn 45 mili giây, chỉ mất 1% độ chính xác. Bài học: ANN là bắt buộc trong tập hợp lớn.

Những lỗi thường gặp

  • Nhúng câu hỏi và tài liệu với các mô hình khác nhau: Kết quả là vô nghĩa; luôn luôn là một mô hình
  • Bỏ qua siêu dữ liệu: Bạn không thể lọc; Bạn mất quyền kiểm soát quyền riêng tư và tính cập nhật.
  • Nhầm nhầm Nhúng với mã hóa: Nhúng mang thông tin có thể đảo ngược; Thật sai lầm khi cho rằng dữ liệu nhạy cảm bị "ẩn".
  • Xây dựng cơ sở hạ tầng lớn không cần thiết trên một tập hợp nhỏ: Một cụm khổng lồ được quản lý cho 5.000 bộ phận là sự phức tạp không cần thiết.
  • Đừng lo lắng quá về tiêu chí giống nhau: Bắt đầu bằng cosine trong văn bản; Tinh chỉnh đến sau.
Thận trọng: Nhúng nhúng ý nghĩa của văn bản bằng số, nhưng không "hủy" nội dung. Nếu cơ sở dữ liệu vectơ bị rò rỉ, các văn bản được lưu trữ ban đầu (trong hầu hết các cài đặt, văn bản cũng được lưu trữ) cũng bị xâm phạm. Giữ kho lưu trữ vector bí mật như các tài liệu bên trong nó.

Tóm lại

  • Nhúng biến văn bản thành một vectơ số mang ý nghĩa của nó; Ý nghĩa tương tự là các vectơ gần.
  • Độ tương tự thường được đo bằng cosin; Đối với các vectơ chuẩn hóa, tích vô hướng cho kết quả tương tự.
  • Trong dữ liệu lớn, ANN (ví dụ: HNSW) thay thế tìm kiếm chính xác: tốc độ cao mà ít phải hy sinh độ chính xác.
  • Cơ sở dữ liệu vectơ thực hiện lưu trữ vectơ + tìm kiếm tương tự + lọc siêu dữ liệu; siêu dữ liệu là điều cần thiết cho RAG doanh nghiệp.
  • Câu hỏi và tài liệu phải được dịch theo cùng một mô hình nhúng; nếu không thì không thể so sánh được tọa độ.

Nhiệm vụ ứng dụng

Trích xuất 10 đoạn văn ngắn (mỗi đoạn 3-6 câu) từ tài liệu bạn đã chọn ở bài trước. (1) Thiết kế ít nhất ba thẻ siêu dữ liệu cho mỗi phần (nguồn, ngày tháng và thẻ thứ ba phù hợp với bối cảnh kinh doanh của bạn: bộ phận, sản phẩm, quyền riêng tư, v.v.). (2) Viết bộ lọc siêu dữ liệu nào sẽ được áp dụng cho 3 câu hỏi khác nhau của người dùng. (3) Tìm 3 cặp phần câu hỏi diễn đạt cùng một nghĩa bằng các từ khác nhau (ví dụ: “quyền nghỉ phép” ↔ “nghỉ phép hàng năm”) và giải thích trong một câu tại sao chúng không khớp với từ khóa tìm kiếm mà sẽ khớp với từ khóa.

danh sách kiểm tra

  • [ ] Tôi có thể nói rằng việc nhúng biến văn bản thành một vectơ trong không gian ngữ nghĩa và các ý nghĩa tương tự rất gần nhau.
  • Tôi biết rằng độ tương tự cosine [] đo góc và là tùy chọn mặc định trong văn bản.
  • [ ] Tôi có thể giải thích tại sao ANN lại cần thiết trong dữ liệu lớn.
  • [ ] Tôi biết tại sao siêu dữ liệu lại quan trọng đối với việc kiểm soát tính bảo mật và độ mới.
  • [ ] Tôi tuân theo nguyên tắc dịch câu hỏi và tài liệu theo cùng một mô hình nhúng.