paint-brush
Nâng cao LLM doanh nghiệp với thế hệ tăng cường truy xuất (RAG) và tích hợp cơ sở dữ liệu vectơtừ tác giả@vpenikal
3,762 lượt đọc
3,762 lượt đọc

Nâng cao LLM doanh nghiệp với thế hệ tăng cường truy xuất (RAG) và tích hợp cơ sở dữ liệu vectơ

từ tác giả Venkata Karthik Penikalapati9m2023/12/05
Read on Terminal Reader

dài quá đọc không nổi

Blog này khám phá sự tích hợp của Thế hệ tăng cường truy xuất (RAG) với cơ sở dữ liệu vectơ, đặc biệt là Milvus, để nâng cao Mô hình học ngôn ngữ (LLM) trong các ứng dụng doanh nghiệp. Nó đề cập đến những thách thức của LLM, giới thiệu cơ sở dữ liệu RAG và vectơ, đồng thời cung cấp các ví dụ và hướng dẫn thực tế. Blog trình bày chi tiết về việc thiết lập môi trường cục bộ cho RAG và Milvus, bao gồm cài đặt và cấu hình, đồng thời kết luận về tiềm năng đáng kể của việc kết hợp các công nghệ này để cải thiện phản hồi do AI điều khiển và hiểu biết theo ngữ cảnh trong các ứng dụng AI của doanh nghiệp.
featured image - Nâng cao LLM doanh nghiệp với thế hệ tăng cường truy xuất (RAG) và tích hợp cơ sở dữ liệu vectơ
Venkata Karthik Penikalapati HackerNoon profile picture


Nâng cao ứng dụng LLM bằng công nghệ nhận biết ngữ cảnh

Các ứng dụng của Mô hình ngôn ngữ lớn đã được biến đổi trên nhiều lĩnh vực khác nhau, hình thành một biên giới mới trong việc hiểu và xử lý ngôn ngữ tự nhiên. LLM, nổi tiếng với việc tạo ra văn bản giống con người, đã cách mạng hóa chatbot, tạo nội dung và thậm chí cả các nhiệm vụ giải quyết vấn đề phức tạp.


Tuy nhiên, bất chấp khả năng ấn tượng của chúng, LLM phải đối mặt với những thách thức đáng chú ý, đặc biệt là về nhận thức ngữ cảnh và duy trì độ chính xác trong các tương tác mở rộng. Một cạm bẫy phổ biến là xu hướng " ảo giác " của họ, trong đó nội dung được tạo ra, mặc dù trôi chảy, có thể dẫn đến tình trạng thiếu chính xác hoặc không liên quan.


Đây là nơi các công nghệ như Thế hệ tăng cường truy xuất (RAG)cơ sở dữ liệu vectơ trở thành then chốt. Bằng cách tích hợp LLM với RAG, tính năng truy xuất động thông tin liên quan từ các bộ dữ liệu khổng lồ, chúng tôi có thể giảm thiểu đáng kể những hạn chế này. Sức mạnh tổng hợp giữa LLM và cơ sở dữ liệu vectơ, có khả năng xử lý và truy xuất dữ liệu vectơ có cấu trúc một cách hiệu quả, hứa hẹn mang lại mức độ sâu, bối cảnh và độ tin cậy mới cho các ứng dụng LLM.


Trong blog này, người đọc có thể mong đợi:


  • Hiểu biết toàn diện về các thách thức LLM : Hiểu các hạn chế của LLM, chẳng hạn như các vấn đề về nhận thức ngữ cảnh và độ chính xác.
  • Giới thiệu về Cơ sở dữ liệu RAG và Vector : Khám phá cách các kỹ thuật này giải quyết các nhược điểm của LLM truyền thống.
  • Minh họa và Hướng dẫn Thực tế : Các ví dụ thực hành thể hiện sự tích hợp của RAG với cơ sở dữ liệu vectơ để nâng cao các ứng dụng LLM.
  • Ứng dụng trong thế giới thực : Khám phá cách áp dụng hiệu quả những tích hợp này trong cài đặt doanh nghiệp.
  • Kiến thức hữu ích cho nhiều đối tượng khác nhau : Cho dù bạn là người đam mê công nghệ, người thực hành AI hay chuyên gia kinh doanh, blog đều nhằm mục đích cung cấp những hiểu biết sâu sắc và kiến thức thực tế có giá trị.



Tìm hiểu thế hệ tăng cường truy xuất (RAG)

Thế hệ tăng cường truy xuất (RAG) là một mô hình đổi mới trong lĩnh vực AI và xử lý ngôn ngữ tự nhiên. Nó đánh dấu một sự thay đổi đáng kể so với các mô hình ngôn ngữ thông thường bằng cách tích hợp việc truy xuất thông tin vào quá trình tạo ngôn ngữ. Cách tiếp cận kết hợp này nâng cao khả năng của các mô hình AI trong việc tạo ra các phản hồi không chỉ chính xác về mặt ngữ cảnh mà còn được truyền tải kiến thức cập nhật từ các nguồn dữ liệu bên ngoài.


Sự ra đời của RAG có thể bắt nguồn từ nỗ lực khắc phục những hạn chế của các mô hình ngôn ngữ tiêu chuẩn, chẳng hạn như GPT (Generative Pre-training Transformer). Các mô hình truyền thống, mặc dù có khả năng tạo ra văn bản mạch lạc rất thành thạo nhưng vẫn thường gặp khó khăn trong việc cung cấp các câu trả lời chính xác, dựa trên thực tế, đặc biệt đối với các truy vấn yêu cầu kiến thức cụ thể, theo thời gian thực.




dòng chảy RAG




Dưới đây là mô tả về cách hoạt động của Thế hệ tăng cường truy xuất (RAG), tích hợp với cơ sở dữ liệu vectơ:


  1. Nhập và lập chỉ mục : Quy trình làm việc bắt đầu với Cơ sở kiến thức toàn diện, là nền tảng trí tuệ của hệ thống. Cơ sở Kiến thức này thường là một kho tài liệu lớn chứa thông tin mà người dùng có thể truy vấn. Những tài liệu này có thể là bất cứ thứ gì từ các trang và bài viết Câu hỏi thường gặp đến cơ sở dữ liệu thông tin có cấu trúc. Trước khi có thể sử dụng những tài liệu này, chúng phải trải qua một quá trình nhập vào, trong đó chúng được xử lý trước và chuyển thành dạng nhúng. Mô hình nhúng —thường là một thuật toán học máy phức tạp — được sử dụng để chuyển đổi thông tin văn bản thành các vectơ nhúng. Các phần nhúng này thể hiện bằng số lượng nội dung ngữ nghĩa của tài liệu trong không gian đa chiều, tối ưu cho việc so sánh độ tương tự.


  2. Tương tác với khách hàng : Tất cả bắt đầu bằng việc khách hàng tương tác với ứng dụng và đặt ra truy vấn. Truy vấn này là một yêu cầu cung cấp thông tin hoặc một câu hỏi mà khách hàng mong đợi AI sẽ trả lời.


  3. Nhúng truy vấn : Sau đó, truy vấn thô của khách hàng sẽ được xử lý bằng Mô hình nhúng. Mô hình này chuyển đổi truy vấn văn bản thành một vectơ, là một biểu diễn số giúp nắm bắt ý nghĩa ngữ nghĩa của truy vấn trong không gian nhiều chiều.


  4. Tìm kiếm cơ sở dữ liệu vectơ : Vectơ truy vấn được gửi đến Cơ sở dữ liệu vectơ, cơ sở dữ liệu chuyên biệt được thiết kế để xử lý dữ liệu vectơ nhiều chiều. Cơ sở dữ liệu thực hiện tìm kiếm tương tự để truy xuất các tài liệu nhúng có liên quan nhất. Các phần nhúng này thể hiện kiến thức được xử lý trước từ Cơ sở Kiến thức đã được đưa vào hệ thống.


  5. Truy xuất ngữ cảnh : Các phần nhúng tài liệu được truy xuất được kết hợp với truy vấn ban đầu để tạo thành một lời nhắc bao gồm cả truy vấn và ngữ cảnh liên quan.


  6. Tạo phản hồi mô hình ngôn ngữ : Lời nhắc phong phú này sau đó được đưa vào Mô hình học ngôn ngữ (LLM). LLM sử dụng ngữ cảnh từ các tài liệu được truy xuất để tạo ra phản hồi chính xác, nhiều thông tin và phù hợp về mặt ngữ cảnh với truy vấn của khách hàng.


  7. Phản hồi tổng quát : Cuối cùng, LLM tạo ra phản hồi tổng quát, phản hồi này được gửi lại cho khách hàng thông qua ứng dụng. Phản hồi này không chỉ dựa trên kiến thức được đào tạo trước của mô hình mà còn được tăng cường bằng thông tin cụ thể được lấy từ cơ sở kiến thức, khiến nó có mức độ phù hợp cao với yêu cầu của người dùng.

Cơ sở dữ liệu vectơ

Cơ sở dữ liệu vectơ lưu trữ và quản lý dữ liệu đã được chuyển đổi thành dạng vectơ số, thường thông qua các quy trình như nhúng mô hình vào máy học. Phần nhúng là cách biểu diễn dữ liệu bằng số, thường là các vectơ chiều cao, nắm bắt các đặc điểm ngữ nghĩa hoặc ngữ cảnh của đầu vào ban đầu. Trong trường hợp dữ liệu văn bản, phần nhúng sẽ chuyển đổi các từ, câu hoặc toàn bộ tài liệu thành dạng mà máy tính có thể xử lý. Các mô hình học máy, đặc biệt là mạng lưới thần kinh, được sử dụng để tạo ra các phần nhúng này sao cho các ý nghĩa tương tự gần giống nhau trong không gian vectơ. Các cơ sở dữ liệu này được thiết kế để thực hiện hiệu quả các tìm kiếm tương tự, giúp định vị các điểm dữ liệu gần nhất với vectơ truy vấn nhất định trong không gian vectơ.



nguồn - https://www.sbert.net/examples/appluggest/semantic-search/README.html



Dưới đây là một cái nhìn sâu hơn về quá trình này:


  1. Lưu trữ dữ liệu : Khi tài liệu được nhập vào, một mô hình nhúng (chẳng hạn như mạng thần kinh) sẽ biến văn bản thành vectơ nhiều chiều. Mỗi vectơ thể hiện ý nghĩa ngữ nghĩa của tài liệu dưới dạng số. Các vectơ này sau đó được lưu trữ trong cơ sở dữ liệu vectơ.


  2. Lập chỉ mục : Để tạo điều kiện truy xuất nhanh, cơ sở dữ liệu xây dựng chỉ mục trên các vectơ này bằng các thuật toán phù hợp với không gian nhiều chiều, chẳng hạn như Chỉ mục tệp đảo ngược (IVF) hoặc Thế giới nhỏ điều hướng phân cấp (HNSW). Việc lựa chọn loại chỉ mục sẽ cân bằng giữa tốc độ và độ chính xác của tìm kiếm.


  3. Tìm kiếm tương tự : Khi một truy vấn được thực hiện, nó cũng được chuyển đổi thành một vectơ bằng cách sử dụng cùng một mô hình nhúng. Cơ sở dữ liệu vectơ sau đó sử dụng chỉ mục để nhanh chóng tìm thấy các vectơ giống nhất với vectơ truy vấn. Độ tương tự được xác định bằng các số liệu khoảng cách như khoảng cách Euclide hoặc độ tương tự cosin.


Ưu điểm của nhúng :


  1. Tương tự về mặt ngữ nghĩa : Các phần nhúng được thiết kế sao cho các mục tương tự về mặt ngữ nghĩa sẽ ở gần hơn trong không gian vectơ, cho phép hệ thống hiểu được ngữ cảnh và ý nghĩa. Ví dụ, trong lĩnh vực gen, dữ liệu biểu hiện gen có thể được mã hóa dưới dạng nhúng để tiết lộ các mẫu chỉ ra mối quan hệ giữa các gen và kiểu hình khác nhau. Điều này có thể hỗ trợ xác định các dấu hiệu sinh học cho các bệnh có thể không rõ ràng bằng phân tích truyền thống.


  2. Các mối quan hệ phức tạp : Chúng có thể nắm bắt các mối quan hệ và sắc thái phức tạp trong dữ liệu mà các cách biểu diễn truyền thống có thể bỏ qua. Một ứng dụng thực tế được thấy trong các hệ thống đề xuất, chẳng hạn như các hệ thống được sử dụng bởi các dịch vụ phát trực tuyến như Netflix hoặc Spotify. Các nền tảng này sử dụng phần nhúng để hiểu sở thích của người dùng và các tính năng nội dung, từ đó đề xuất các bộ phim hoặc bài hát có điểm tương đồng với các lựa chọn trước đó của người dùng. Bất chấp sự đa dạng về nội dung, phần nhúng cho phép đưa ra các đề xuất có nhiều sắc thái vượt ra ngoài thể loại hoặc nghệ sĩ, xem xét các mô hình sâu hơn về mức tiêu dùng của người dùng.


  3. Tính đồng nhất : Phần nhúng chuyển đổi các loại dữ liệu khác nhau thành định dạng vectơ thống nhất, đơn giản hóa các hoạt động như so sánh và truy xuất.


Bắt đầu với Vector DB

Tạo môi trường phát triển cục bộ cho RAG và Vector DB ( Milvus ) bao gồm một số bước chính.


Đây là một hướng dẫn có cấu trúc:


  1. Điều kiện tiên quyết :

    • Đảm bảo Python 3.6+ được cài đặt trên hệ thống của bạn.

    • Cần có Docker để chạy Milvus.


  2. Môi trường ảo :

    • Tạo một môi trường ảo mới và sử dụng nó:

       python3 -m venv rag-milvus-env source rag-milvus-env/bin/activate # Install supporting dependencies pip install transformers datasets faiss-cpu torch sentence-transformers pymilvus


  3. Milvus sử dụng docker :

  • Kéo và chạy hình ảnh Milvus Docker: (bạn cũng có thể sử dụng db vector khác)

  • Bạn có thể sử dụng các bước bên dưới hoặc làm theo hướng dẫn bắt đầu được cung cấp tại đây .


     docker pull milvusdb/milvus:latest docker run -d --name milvus_cpu -p 19530:19530 -p 19121:19121 milvusdb/milvus:latest


  • Dữ liệu cài đặt :

    Bây giờ, hãy thử tải xuống một số dữ liệu mẫu, tạo phần nhúng và chèn chúng vào bộ sưu tập.

     import requests import csv url = "http://qim.fs.quoracdn.net/quora_duplicate_questions.tsv" # Download the file response = requests.get(url) response.raise_for_status() # This will raise an error if the download failed # Decode the content and split into lines lines = response.content.decode('utf-8').splitlines() questions = [] # Process the lines reader = csv.reader(lines, delimiter='\t') next(reader) # Skip the header row for row in reader: questions.extend([row[1], row[4]]) # Assuming the questions are in the 2nd and 3rd columns questions = questions[:10000]


  • Tạo phần nhúng

     from sentence_transformers import SentenceTransformer # transformer to create embeddings model = SentenceTransformer('all-MiniLM-L6-v2') embeddings = model.encode(questions)


  • Chèn vào vector DB.

     # connect to db connections.connect() embedding_size = 384 # Prepare the collection schema fields = [ FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True), FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=embedding_size) ] schema = CollectionSchema(fields, "questions") collection = Collection("questions", schema) # Insert the document embeddings mr = collection.insert([embeddings]) # to get document, in practice this would be some external DB. id_to_question = {str(mr.primary_keys[i]): questions[i] for i in range(len(questions))} # List all collections collections = list_collections() print(collections)


  • Lập chỉ mục bộ sưu tập.

     from pymilvus import Collection index_params = { "metric_type": "L2", "index_type": "HNSW", # Index of type HNSW, refer to docs for other types. "params": { "M": 16, # Example value, adjust as needed "efConstruction": 200 } } collection = Collection("questions") collection.create_index( field_name="embedding", index_params=index_params )


  • Tài liệu truy vấn

     query = "What is artificial intelligence?" query_embedding = model.encode(query) collection.load() # Define search parameters search_params = {"metric_type": "L2", "params": {"nprobe": 10}} # Perform the search results = collection.search( data=[query_vector], anns_field="embedding", param=search_params, limit=10, expr=None, consistency_level="Strong" ) # Process results for result in results: milvus_id = str(result.id) # Convert ID to string for dictionary lookup original_question = id_to_question[milvus_id] print(f"Milvus ID: {milvus_id}, Similar Question: {original_question}")


Khi chúng tôi nhận được các tài liệu tương tự về mặt ngữ nghĩa từ vectơ db., chúng tôi có thể chuyển bối cảnh + truy vấn đầu vào này tới LLM, điều này sẽ mang lại kết quả tốt hơn nhiều vì LLM hiện đã có ngữ cảnh.


Phần kết luận

Tóm lại, việc tích hợp RAG với cơ sở dữ liệu vectơ như Milvus mang lại một giải pháp hiệu quả cho một số thách thức cấp bách nhất trong các ứng dụng LLM—đặc biệt là những thách thức đòi hỏi hiểu biết sâu sắc về ngữ cảnh và truy xuất thông tin động. Bằng cách kết hợp sức mạnh tổng hợp của LLM với độ chính xác và hiệu quả của cơ sở dữ liệu vectơ, doanh nghiệp có thể cải thiện đáng kể mức độ liên quan và độ chính xác của các phản hồi do AI điều khiển, cung cấp cho người dùng các tương tác có giá trị và phong phú theo ngữ cảnh.


Khi AI tiếp tục phát triển, sự hợp nhất của các công nghệ này không chỉ là một bước tiến mà còn là một bước nhảy vọt, báo trước một tương lai nơi AI có thể hỗ trợ các ứng dụng phức tạp, đa dạng và nhiều sắc thái hơn trên tất cả các lĩnh vực. Blog này đã tạo tiền đề cho các nhà đổi mới và người thực hành bắt đầu thử nghiệm những công cụ này, vượt qua ranh giới của những gì có thể làm được trong lĩnh vực ứng dụng AI dành cho doanh nghiệp.