0
0
Lập trình
Hưng Nguyễn Xuân 1
Hưng Nguyễn Xuân 1xuanhungptithcm

Hướng Dẫn Sử Dụng Spring AI với Generative AI và RAG

Đăng vào 8 tháng trước

• 5 phút đọc

Khám Phá Thế Giới AI với Spring AI

Chào mừng bạn đến với bài viết của chúng tôi về Spring AI! Trong bài viết này, chúng ta sẽ tìm hiểu cách Spring AI hoạt động và cách sử dụng Generative AI một cách hiệu quả thông qua phương pháp Retrieval-Augmented Generation (RAG). Hãy cùng bắt đầu hành trình khám phá này!

Giới Thiệu về Generative AI và RAG

Generative AI là một mô hình AI mạnh mẽ, có khả năng tạo ra nội dung mới dựa trên dữ liệu đã được huấn luyện. Tuy nhiên, kiến thức của nó chỉ giới hạn trong dữ liệu mà nó đã được đào tạo. Điều này đặt ra câu hỏi: Làm thế nào chúng ta có thể làm cho AI hiểu về các tài liệu hoặc dữ liệu cụ thể của riêng chúng ta? Đây chính là vai trò của mô hình RAG.

Ý Tưởng Dự Án

Một ý tưởng phổ biến cho dự án này là xây dựng một dịch vụ cơ sở dữ liệu phim (giống như IMDB). Chúng ta sẽ tập trung vào việc tối ưu hóa cơ sở dữ liệu phim bằng cách sử dụng các dịch vụ AI.

Dự Án: Dịch vụ gợi ý nội dung truyền thông cá nhân hóa.
Mục Đích: Tạo ra một hệ thống có thể cung cấp gợi ý về nội dung truyền thông dựa trên sở thích của người dùng và các nội dung đã xem trước đó.

Yêu Cầu

  • Dữ Liệu: Thu thập dữ liệu phim và lưu trữ chúng trong cơ sở dữ liệu vector.
  • Hồ Sơ Người Dùng: Giả sử có những người dùng đã đăng ký trong hệ thống. Hệ thống sẽ thu thập phản hồi từ người dùng về các bộ phim đã xem.
  • Áp Dụng RAG: Khi người dùng đăng nhập hoặc yêu cầu gợi ý mới, hệ thống sẽ truy vấn các nội dung mà người dùng thích. Những nội dung này sẽ được sử dụng để tìm các bộ phim tương tự.
  • Generative AI sẽ tổng hợp các gợi ý này thành một kết quả cá nhân hóa.
  • Fine-tuning: Generative AI có thể tóm tắt lý do tại sao nội dung gợi ý lại phù hợp với người dùng.

Định Nghĩa về Spring AI

Spring AI là gì?
Spring Framework là một công cụ đã được chứng minh cho các nhà phát triển Java trong việc xây dựng máy chủ web. Spring AI là một công cụ mới cho phép dễ dàng tương tác với các mô hình AI.

Để biết thêm thông tin, hãy tham khảo tài liệu Spring AI: Spring AI Documentation

Tại Sao Nên Sử Dụng Spring AI?

  • Tôi thường bắt đầu dự án mới bằng cách chọn Spring Boot.
  • Tôi muốn làm quen với các công nghệ liên quan đến AI càng sớm càng tốt.
  • Spring AI đã phát hành phiên bản có kiến trúc tương đối ổn định.

Thiết Lập Môi Trường

Thêm phụ thuộc Maven:

xml Copy
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-tika-document-reader</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-rag</artifactId>
</dependency>

Máy Chủ Ollama

Ollama là gì?
Ollama là một công cụ mã nguồn mở thân thiện, giúp đơn giản hóa quy trình chạy các mô hình ngôn ngữ lớn (LLMs) trên máy tính của bạn mà không cần dựa vào dịch vụ đám mây.

Cách cài đặt Ollama (trên Linux):

bash Copy
$ curl -fsSL https://ollama.com/install.sh | sh
$ ollama serve

Theo mặc định, Spring sẽ tự động kéo các mô hình không tồn tại khi khởi động, nhưng đôi khi có thể gặp lỗi do thời gian chờ. Trong trường hợp này, bạn nên kéo mô hình bằng lệnh ollama pull <model>.

Cơ Sở Dữ Liệu Vector

Cơ Sở Dữ Liệu Vector là gì?
Là một cơ sở dữ liệu chuyên dụng được thiết kế để lưu trữ, quản lý và truy vấn dữ liệu dưới dạng vector số.

Tại Sao Cần Cơ Sở Dữ Liệu Vector?

Cơ sở dữ liệu vector cho phép so sánh dữ liệu dựa trên sự tương đồng thay vì khớp chính xác. Ví dụ, với một mô tả phim được lưu trong JSON:

json Copy
{
  "title": "The Godfather",
  "genre": "Crime",
  "actors": ["Marlon Brando", "Al Pacino"],
  "plot": "The aging patriarch of an organized crime dynasty transfers control of his clandestine empire to his reluctant son."
}

Khi truy vấn bằng từ khóa “Mafia family”, tìm kiếm tương đồng sẽ dễ dàng trả về bộ phim “The Godfather”.

Các Cơ Sở Dữ Liệu Vector Có Sẵn

  • Apache Cassandra
  • Couchbase
  • Elasticsearch
  • MariaDB
  • MongoDB Atlas
  • OpenSearch
  • Oracle Database
  • Postgres
  • Redis

Tôi chọn Elasticsearch vì tôi đã có kinh nghiệm làm việc với nó.

Thiết Lập Elasticsearch

  1. Khởi động máy chủ Elasticsearch với Docker:
bash Copy
$ docker run -d --name elasticsearch --net somenetwork -p 9200:9200 \
 -p 9300:9300 -e "discovery.type=single-node" -e "xpack.security.enabled=false" \
docker.elastic.co/elasticsearch/elasticsearch:9.0.0
  1. Cấu hình Elasticsearch trong tệp application.yaml:
yaml Copy
spring:
  elasticsearch:
    uris: http://localhost:9200
  ai:    
    vectorstore:
      elasticsearch:
        initialize-schema: true
        index-name: movies
        dimensions: 1024
        similarity: cosine

Chọn Mô Hình AI

Spring AI có cấu hình mặc định cho các tính năng embedding và generative. Bạn có thể thiết lập trong tệp application.yaml:

yaml Copy
spring:
  ai:
    ollama:
      embedding:
        options:
          model: mxbai-embed-large
      chat:
        model: mistral

Giải Quyết Bài Toán Gợi Ý Phim

Thực hiện từng bước để xây dựng giải pháp gợi ý phim.

  1. Tạo Dữ Liệu Thử Nghiệm: Thiết kế lớp dữ liệu để phù hợp với giải pháp.
  2. Vector Hóa Phim: Định nghĩa một bean TextSplitter để chia tài liệu thành các token.
  3. Triển Khai Tìm Kiếm Tương Đồng: Mở rộng MovieSuggestionService với chức năng tìm kiếm.
  4. Tạo Điểm Cuối Gợi Ý Phim: Cấu hình ChatClient để tạo nội dung.

Kiểm Tra Điểm Cuối Gợi Ý

Sau khi khởi động ứng dụng Spring, bạn có thể gửi yêu cầu tới endpoint gợi ý phim. Ví dụ:

  • Gửi yêu cầu đến: http://localhost:8080/suggest?userId=user-001

Kết Luận

Cảm ơn bạn đã theo dõi bài viết! Tôi hy vọng bạn đã tìm thấy thông tin hữu ích cho việc áp dụng Generative AI trong các dự án của mình. Hãy cùng bắt tay vào thực hiện và trải nghiệm nhé! 😊👋

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào