Giới thiệu thực tế về cách vector và embedding giúp tìm kiếm theo ngữ nghĩa và tạo bộ nhớ cho AI, cùng cách module OCA field_vector đưa vector field vào Odoo, với bản migration lên Odoo 19.0 có đóng góp của Trobz.

Nền tảng: vector và embedding

Vector là gì?

Trong khoa học máy tính và xử lý dữ liệu, vector là một danh sách số có thứ tự, ví dụ [1.2, -0.5, 0.8]. Trong toán học và vật lý, vector biểu diễn độ lớn và hướng. Trong AI, vector được dùng để biểu diễn các đặc trưng hoặc tọa độ trong không gian nhiều chiều.

Embedding là gì?

Embedding là một vector biểu diễn đối tượng trong thế giới thực, như một đoạn văn bản, hình ảnh, người dùng hay sản phẩm, dưới dạng máy có thể xử lý và so sánh.

Mô hình embedding nhận dữ liệu, chẳng hạn từ “Apple”, và chuyển thành một dãy số dài, ví dụ một vector 1.536 chiều. Điểm quan trọng là phép chuyển đổi này giữ được ý nghĩa:

  • Vector của “Apple” gần với “Banana” (cùng là trái cây) hơn là với “Car” (phương tiện).
  • Với các mô hình word embedding kinh điển, “King” trừ “Man” cộng “Woman” cho ra một vector rất gần với “Queen”.

Vì sao embedding quan trọng với AI

Embedding là nền tảng của tìm kiếm ngữ nghĩaRAG (Retrieval-Augmented Generation) hiện nay.

Cách tìm kiếmĐối chiếu theoKhi người dùng tìm “fruit”
Tìm kiếm truyền thốngTừ khóa (WHERE name ILIKE '%apple%')Không tìm thấy “Apple”, vì không có từ “fruit”
Tìm kiếm vectorÝ nghĩa (ORDER BY embedding <-> query_embedding)Tìm thấy “Apple”, vì hai vector gần nhau

Embedding cũng mang lại cho AI agent một dạng bộ nhớ. Thay vì nạp toàn bộ cơ sở dữ liệu vào ngữ cảnh, agent chỉ truy xuất những đoạn thông tin liên quan nhất đến câu hỏi của người dùng. Đây là điều giúp RAG khả thi trên lượng dữ liệu lớn.

Module OCA: field_vector

Mục đích

Module field_vector, thuộc OCA/server-tools , bổ sung kiểu vector field gốc vào framework Odoo. Laurent Mignon (ACSONE) giới thiệu module này cho Odoo 16.0 qua PR #3251 .

Module này cho phép:

  • Tích hợp gốc: lập trình viên định nghĩa vector field trên bất kỳ model Odoo nào, giống như field Char hay Integer.
  • Backend pgvector: vector được lưu và truy vấn bằng extension PostgreSQL pgvector , ngay trong cơ sở dữ liệu hiện có.
  • Không cần cơ sở dữ liệu vector riêng: không phải dùng dịch vụ bên ngoài như Pinecone hay Weaviate, nên kiến trúc đơn giản hơn và dữ liệu nằm cùng một chỗ.

Hỗ trợ Odoo 19.0

Trobz đã đóng góp vào việc migration field_vector lên Odoo 19.0, được merge vào tháng 1/2026 qua PR #3430 . Các dự án trên Odoo 19.0 có thể dùng vector field gốc mà không cần backport hay giải pháp tạm.