Trang chủ Kiến Thức Công Nghệ Vector Database là gì? Hướng dẫn lưu trữ Dữ liệu vào Vector Database
Công Nghệ

Vector Database là gì? Hướng dẫn lưu trữ Dữ liệu vào Vector Database

Chia sẻ
Vector Database là gì? Hướng dẫn lưu trữ Dữ liệu vào Vector Database
Chia sẻ

Trong thời đại công nghệ hiện nay, lượng dữ liệu mà chúng ta tạo ra mỗi ngày là vô cùng lớn – từ văn bản, hình ảnh, âm thanh cho đến video. Vấn đề không chỉ là làm sao để lưu trữ chúng mà còn là tìm kiếm thông tin nhanh chóng và chính xác khi cần. 

Khác với các loại cơ sở dữ liệu truyền thống thường lưu trữ dữ liệu theo dạng bảng hoặc tài liệu, Vector Database lưu trữ dữ liệu dưới dạng vector embeddings – một dạng biểu diễn số giúp máy tính hiểu được mối quan hệ giữa các đối tượng. Điều này giúp hệ thống có thể tìm kiếm dữ liệu theo ý nghĩa, thay vì chỉ đơn thuần khớp theo từ khóa. Hãy cùng mình tìm hiểu kĩ hơn về Vector Database trong bài viết sau đây nhé.

1. Tìm hiểu về Vector và Embedding

Khi bạn nhập một câu hỏi vào một hệ thống AI như ChatGPT, nó không thực sự “hiểu” từng từ theo cách con người làm. Thay vào đó, nó chuyển đổi các từ đó thành các con số, gọi là vectors (vector), để xử lý và tìm ra ý nghĩa của chúng.

Hãy tưởng tượng bạn có một bản đồ thành phố. Mỗi địa điểm trên bản đồ có một vị trí cụ thể với tọa độ (ví dụ: kinh độ và vĩ độ). Tương tự như vậy, AI sử dụng embeddings, tức là một tập hợp các con số, để định vị từng từ hoặc câu trong một không gian nhiều chiều, giống như cách xác định vị trí trên bản đồ.

Ví dụ:

  • Từ “mèo” có thể được thể hiện bằng một vector như [0.2, 0.8, 0.5]
  • Từ “chó” có thể là [0.3, 0.7, 0.6]
  • Từ “xe hơi” có thể là [0.9, 0.1, 0.2]

Nhìn vào các con số này, ta thấy vector của “mèo” và “chó” khá gần nhau, có nghĩa là AI hiểu rằng chúng có ý nghĩa tương tự nhau. Trong khi đó, “xe hơi” có vector rất khác biệt, cho thấy nó không liên quan nhiều đến “mèo” hoặc “chó”.

Việc chuyển đổi từ ngữ thành các con số giúp AI tìm kiếm sự tương đồng giữa các khái niệm một cách nhanh chóng và chính xác hơn, ngay cả khi bạn sử dụng những từ khác nhau nhưng có cùng ý nghĩa. Ví dụ, nếu bạn tìm kiếm “cún con”, AI có thể hiểu rằng bạn đang nói về “chó con” dù từ này không hoàn toàn giống nhau.

Những mô hình AI lớn như ChatGPT làm việc với hàng triệu từ và khái niệm khác nhau. Vì vậy, vector không chỉ đơn giản có 2-3 con số mà có thể lên đến hàng trăm hoặc hàng nghìn giá trị.

Hãy tưởng tượng bạn có một bản đồ chi tiết của toàn bộ thế giới thay vì chỉ một thành phố nhỏ. Khi số lượng điểm trên bản đồ tăng lên, việc tìm kiếm và phân tích sẽ trở nên khó khăn và tốn nhiều tài nguyên (thời gian, chi phí). Nếu không xử lý đúng cách, AI sẽ mất rất nhiều thời gian để đưa ra kết quả hoặc yêu cầu tài nguyên máy tính khổng lồ để vận hành.

💡

Vectors: Là danh sách các con số biểu diễn ý nghĩa của từ.
Embeddings: Là quá trình chuyển đổi dữ liệu thô thành một dạng có thể đo lường được mức độ tương đồng và đồng thời giảm kích thước của dữ liệu.

2. Vector Database là gì?

Vector Database (Cơ sở dữ liệu vector) là một hệ thống lưu trữ và quản lý dữ liệu dưới dạng vector, tức là những dãy số biểu diễn thông tin như văn bản, hình ảnh hoặc âm thanh. Vector Database giúp tìm kiếm và so sánh dữ liệu dựa trên độ tương đồng, thay vì chính xác theo từ ngữ như trong các cơ sở dữ liệu truyền thống.

Hãy tưởng tượng bạn có một hệ thống tìm kiếm tài liệu giống như Google, và bạn muốn tìm kiếm nội dung liên quan đến Làm thế nào để nấu món phở bò?.

Thay vì tìm kiếm từng từ trong câu, hệ thống sẽ hoạt động như sau:

  • Chuyển đổi văn bản thành vector: Câu hỏi của bạn là Làm thế nào để nấu món phở bò? sẽ được chuyển thành một vector số (ví dụ:[0.12, 0.45, 0.89, ...]) phản ánh nội dung và ý nghĩa của nó. Tương tự, các tài liệu trong hệ thống cũng đã được chuyển thành vectors trước đó.
  • Tìm kiếm trong Vector Database: Hệ thống sẽ không tìm kiếm theo từ khóa chính xác như “phở” hay “bò”, mà sẽ so sánh vector của câu hỏi với vectors của các tài liệu khác.
    Ví dụ, một bài viết có tiêu đề “Công thức nấu phở truyền thống tại nhà” sẽ có vector tương tự câu hỏi của bạn, trong khi một bài viết khác như “Cách làm bánh pizza” sẽ có vector rất khác.
  • Trả về kết quả phù hợp: Vector Database sẽ trả về tài liệu có nội dung liên quan nhất, chẳng hạn như: Cách nấu phở bò ngon chuẩn vị Hà Nội, Những bí quyết làm nước dùng phở đậm đà. Những kết quả không liên quan như Làm bánh pizza sẽ được xếp hạng thấp hơn hoặc loại bỏ.

3. Hướng dẫn lưu trữ dữ liệu vào Vector Database (ChromaDB)

Phần ví dụ này đã xuất hiện rất nhiều lần trong các bài viết về AI của mình, nên mình xin phép copy lại nhé. Bên dưới là một số embedding model mà Open AI cung cấp:

  • text-embedding-3-large: Phù hợp cho các tác vụ yêu cầu độ chính xác cao như tìm kiếm ngữ nghĩa sâu, hệ thống gợi ý nâng cao và phân tích văn bản phức tạp.
  • text-embedding-3-small: Thích hợp cho các ứng dụng thời gian thực hoặc trong môi trường có tài nguyên hạn chế, nơi tốc độ và hiệu quả được ưu tiên.
  • text-embedding-ada-002: Được sử dụng rộng rãi trong các tác vụ như tìm kiếm ngữ nghĩa, phân loại văn bản và hệ thống gợi ý.

Đây là định dạng file document html của mình, các bạn nhớ lưu vào thành 1 file trong folder docs nhé.

HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Thông tin khóa học 200Lab</title>
</head>
<body>
    <p>- Hiện tại 200Lab có các khóa học sau: DevOps, Backend, Frontend với giá lần lượt là 10$, 20$, và 30$ ở hình thức học Online. Offline thì cộng thêm 10$ trên giá Online.</p>
    <p>- Các hình thức thanh toán bao gồm: thẻ tín dụng, chuyển khoản và trả góp.</p>
</body>
</html>

Đọc các file tài liệu định dạng html ở thư mục docs và lưu trữ vào ChromaDB.

Python

from langchain.document_loaders import DirectoryLoader, TextLoader

loader = DirectoryLoader("docs", glob="./*.html", loader_cls=lambda path: TextLoader(path, encoding="utf-8"))
documents = loader.load()
len(documents)

from langchain.text_splitter import RecursiveCharacterTextSplitter

text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
documents = text_splitter.split_documents(documents)
len(documents)


from langchain import embeddings
from langchain_openai import OpenAIEmbeddings

db_directory = 'db'

embedding = OpenAIEmbeddings(model="text-embedding-ada-002")
from langchain.vectorstores import Chroma

vector_db = Chroma.from_documents(
   documents=documents,
   embedding=embedding,
   persist_directory=db_directory
)
# Trả về tất cả document đã lưu
vector_db.get()

4. Kết luận

Vector Database là công cụ quan trọng giúp lưu trữ và tìm kiếm dữ liệu hiệu quả bằng cách sử dụng vector embeddings để hiểu và so sánh ý nghĩa giữa các dữ liệu. Công nghệ này giúp tăng tốc độ xử lý, cải thiện độ chính xác và tối ưu chi phí khi làm việc với lượng dữ liệu lớn.

Nhờ vào khả năng tìm kiếm thông minh và mở rộng linh hoạt, Vector Database đang trở thành giải pháp thiết yếu trong các lĩnh vực như AI, hệ thống gợi ý và phân tích dữ liệu.

Các bài viết liên quan:

  • Hướng dẫn Xây dựng Chatbot AI với LLma 2 và OpenAI
  • AI Agent là gì? Hướng dẫn tạo AI Agent với LangGraph và LLM của OpenAI
  • Copilot là gì ? Hướng dẫn sử dụng Trợ lý AI của Microsoft
  • Retrieval-Augmented Generation (RAG) là gì? Cách hoạt động và Ứng dụng
Bài viết cùng chuyên mục
Tối ưu ứng dụng với cấu trúc dữ liệu cơ bản và bitwise
Công Nghệ

Tối ưu ứng dụng với cấu trúc dữ liệu cơ bản và bitwise

Trong bài viết này, 200Lab sẽ chia sẻ những trường hợp dễ...

Công Nghệ

So sánh Flutter vs React Native: Framework nào đáng học năm 2021

Điểm chung của Flutter, React Native đều là Cross-platform Mobile, build native...

HTTP/2 là gì? So sánh HTTP/2 và HTTP/1
Công Nghệ

HTTP/2 là gì? So sánh HTTP/2 và HTTP/1

Từ khi Internet ra đời, sự phát triển về các giao thức...

Upload File từ Frontend đến Backend mà rất nhiều bạn vẫn đang làm sai!!
Công Nghệ

Upload File từ Frontend đến Backend mà rất nhiều bạn vẫn đang làm sai!!

1. Client encode file (base64) rồi gởi về backend 200Lab đã từng...

Công Nghệ

React Native – Hướng dẫn làm việc với Polyline và Animated-Polyline trên Map

Vẽ đường đi trên bản đồ là một nghiệp vụ vô cùng...

Công Nghệ

Hybrid App và Native App: Những khác biệt to lớn

Bất cứ khi nào một công ty quyết định làm ứng dụng...

Web/System Architecture 101 – Kiến trúc web/hệ thống cơ bản cho người mới
Công Nghệ

Web/System Architecture 101 – Kiến trúc web/hệ thống cơ bản cho người mới

Đây là một kiến trúc cơ bản mà bất kì một người...

Công Nghệ

Tư duy kiến trúc thông qua các trò chơi mà rất nhiều bạn không biết

Tư duy kiến trúc là gì? Tư duy kiến trúc có thể...