Mô hình nhúng Văn bản

Các mô hình nhúng văn bản chủ yếu được sử dụng để tính toán biểu diễn vector của văn bản. Ở đây, thuật ngữ "vector" đề cập đến một vector toán học, cũng được gọi là vector đặc trưng. Là một nhà phát triển, tất cả những gì bạn cần biết là một mô hình nhúng văn bản có thể tính toán vector đặc trưng của một đoạn văn bản, sau đó thông qua việc sử dụng tính toán tương tự vector, nó có thể xác định nội dung văn bản có các đặc trưng tương tự.

Mẹo: Để có kiến thức cơ bản về mô hình nhúng văn bản, vui lòng tham khảo Hướng dẫn giới thiệu về Mô hình nhúng văn bản

Sự khác biệt giữa Tìm kiếm Vector và Tìm kiếm dựa trên Từ khóa

  • Tìm kiếm Vector dựa trên sự tương đồng ngữ nghĩa của vector từ. Nó có thể tìm thấy kết quả có liên quan ngữ nghĩa đến truy vấn, ngay cả khi các từ truy vấn và các từ trong kết quả không khớp hoàn toàn. Tìm kiếm Vector ánh xạ từ vựng vào không gian vector có số chiều cao và tính toán sự tương đồng giữa các vector. Điều này có nghĩa là ngay cả khi các từ chính mình không khớp, miễn là chúng có ý nghĩa tương đồng, có thể tìm thấy các kết quả liên quan.
  • Tìm kiếm dựa trên Từ khóa, mặt khác, là quá trình so khớp chuỗi đơn giản. Nó chỉ trả về kết quả chứa các từ truy vấn khớp chính xác. Nếu một tài liệu sử dụng các từ khác nhau, ngay cả khi chúng có ý nghĩa tương đồng, chúng sẽ không được khớp.

Lớp Nhúng là một loại lớp được thiết kế đặc biệt để tương tác với các mô hình nhúng văn bản. Có rất nhiều nhà cung cấp mô hình nhúng (như OpenAI, Cohere, Hugging Face, v.v.), và thiết kế của lớp này là cung cấp một giao diện tiêu chuẩn cho tất cả các nhà cung cấp.

Lớp Nhúng tạo ra biểu diễn vector của văn bản. Với tìm kiếm vector, có thể thực hiện tìm kiếm ngữ nghĩa, ví dụ, tìm kiếm các đoạn văn tương tự nhất trong không gian vector.

Lớp Nhúng cơ bản trong LangChain tiết lộ hai phương thức: một cho việc nhúng tài liệu và một cho việc nhúng truy vấn. Phương pháp đầu tiên nhận nhiều văn bản làm đầu vào, trong khi phương pháp thứ hai nhận một văn bản duy nhất làm đầu vào. Lý do họ được xem xét là hai phương pháp khác nhau là vì một số nhà cung cấp nhúng có các phương pháp nhúng khác nhau cho các tài liệu cần tìm kiếm và các truy vấn (các truy vấn tìm kiếm chính).

Bắt đầu Nhanh

Dưới đây là một ví dụ sử dụng mô hình nhúng của OpenAI:

Cấu hình

Đầu tiên, chúng ta cần cài đặt gói Python của OpenAI. Vì LangChain có nhiều cài đặt khác nhau của các mô hình nhúng văn bản, nhà phát triển cần cài đặt các phụ thuộc của các mô hình khác nhau theo lựa chọn của họ:

pip install langchain-openai

Cấu hình khóa OpenAI thông qua biến môi trường:

export OPENAI_API_KEY="..."

Nếu bạn không muốn thiết lập biến môi trường, bạn có thể truyền tham số có tên openai_api_key trực tiếp khi khởi tạo lớp OpenAI LLM để truyền qua khóa:

from langchain_openai import OpenAIEmbeddings

mô_hình_nhúng = OpenAIEmbeddings(openai_api_key="...")

Nếu không, bạn có thể khởi tạo mà không có bất kỳ tham số nào:

from langchain_openai import OpenAIEmbeddings

mô_hình_nhúng = OpenAIEmbeddings()

nhúng_tài_liệu

Tính toán các đặc trưng vector của một lô văn bản:

nhúng = mô_hình_nhúng.nhúng_tài_liệu(
    [
        "Xin chào bạn!",
        "Ồ, chào bạn!",
        "Tên bạn là gì?",
        "Bạn bè gọi tôi là Thế giới",
        "Xin chào Thế giới!"
    ]
)
len(nhúng), len(nhúng[0])
(5, 1536)

nhúng_truy_vấn

Hàm này tính toán đặc trưng vector của một đoạn văn truy vấn. Thường, nó liên quan đến việc chuyển đổi câu hỏi cần tìm kiếm thành một vector đặc trưng, sau đó sử dụng vector này để truy vấn các văn bản tương tự trong cơ sở dữ liệu vector.

truy_vấn_đã_nhúng = mô_hình_nhúng.nhúng_truy_vấn("Trong cuộc trò chuyện nhắc đến tên gì?")
truy_vấn_đã_nhúng[:5]
[0.0053587136790156364,
 -0.0004999046213924885,
 0.038883671164512634,
 -0.003001077566295862,
 -0.00900818221271038]