Logo Zephyrnet

Các mẫu RAG nâng cao trên Amazon SageMaker | Dịch vụ web của Amazon

Ngày:

Ngày nay, khách hàng của tất cả các ngành—cho dù đó là dịch vụ tài chính, chăm sóc sức khỏe và khoa học đời sống, du lịch và khách sạn, truyền thông và giải trí, viễn thông, phần mềm dưới dạng dịch vụ (SaaS) và thậm chí cả các nhà cung cấp mô hình độc quyền—đang sử dụng các mô hình ngôn ngữ lớn (LLM) để xây dựng các ứng dụng như chatbot hỏi đáp (QnA), công cụ tìm kiếm và cơ sở kiến ​​thức. Những cái này trí tuệ nhân tạo các ứng dụng không chỉ được sử dụng để tự động hóa các quy trình kinh doanh hiện có mà còn có khả năng chuyển đổi trải nghiệm cho khách hàng khi sử dụng các ứng dụng này. Với những tiến bộ đang được thực hiện với LLM như Hướng dẫn Mixtral-8x7B, dẫn xuất của các kiến ​​trúc như hỗn hợp các chuyên gia (MoE), khách hàng liên tục tìm cách cải thiện hiệu suất và độ chính xác của các ứng dụng AI tổng quát đồng thời cho phép họ sử dụng hiệu quả nhiều mô hình nguồn đóng và nguồn mở hơn.

Một số kỹ thuật thường được sử dụng để cải thiện độ chính xác và hiệu suất đầu ra của LLM, chẳng hạn như tinh chỉnh với tinh chỉnh tham số hiệu quả (PEFT), học tăng cường từ phản hồi của con người (RLHF), và biểu diễn chắt lọc kiến ​​thức. Tuy nhiên, khi xây dựng các ứng dụng AI tổng quát, bạn có thể sử dụng một giải pháp thay thế cho phép kết hợp linh hoạt kiến ​​thức bên ngoài và cho phép bạn kiểm soát thông tin được sử dụng để tạo mà không cần phải tinh chỉnh mô hình nền tảng hiện có của mình. Đây là lúc Thế hệ tăng cường truy xuất (RAG) xuất hiện, đặc biệt dành cho các ứng dụng AI tổng quát, trái ngược với các giải pháp thay thế tinh chỉnh mạnh mẽ và đắt tiền hơn mà chúng ta đã thảo luận. Nếu đang triển khai các ứng dụng RAG phức tạp vào công việc hàng ngày của mình, bạn có thể gặp phải những thách thức chung với hệ thống RAG của mình như truy xuất không chính xác, tăng kích thước và độ phức tạp của tài liệu cũng như tràn ngữ cảnh, điều này có thể ảnh hưởng đáng kể đến chất lượng và độ tin cậy của các câu trả lời được tạo .

Bài đăng này thảo luận về các mẫu RAG để cải thiện độ chính xác của phản hồi bằng cách sử dụng LangChain và các công cụ như trình truy xuất tài liệu gốc bên cạnh các kỹ thuật như nén theo ngữ cảnh để cho phép các nhà phát triển cải thiện các ứng dụng AI tổng hợp hiện có.

Tổng quan về giải pháp

Trong bài đăng này, chúng tôi trình bày cách sử dụng tính năng tạo văn bản Hướng dẫn Mixtral-8x7B kết hợp với mô hình nhúng BGE Large En để xây dựng hiệu quả hệ thống RAG QnA trên sổ ghi chép Amazon SageMaker bằng cách sử dụng công cụ truy xuất tài liệu gốc và kỹ thuật nén theo ngữ cảnh. Sơ đồ sau minh họa kiến ​​trúc của giải pháp này.

Bạn có thể triển khai giải pháp này chỉ bằng vài cú nhấp chuột bằng cách sử dụng Khởi động Amazon SageMaker, một nền tảng được quản lý hoàn toàn cung cấp các mô hình nền tảng tiên tiến cho nhiều trường hợp sử dụng khác nhau như viết nội dung, tạo mã, trả lời câu hỏi, viết quảng cáo, tóm tắt, phân loại và truy xuất thông tin. Nó cung cấp một tập hợp các mô hình được đào tạo trước mà bạn có thể triển khai nhanh chóng và dễ dàng, đẩy nhanh quá trình phát triển và triển khai các ứng dụng máy học (ML). Một trong những thành phần chính của SageMaker JumpStart là Model Hub, nơi cung cấp một danh mục lớn các mô hình được đào tạo trước, chẳng hạn như Mixtral-8x7B, cho nhiều nhiệm vụ khác nhau.

Mixtral-8x7B sử dụng kiến ​​trúc MoE. Kiến trúc này cho phép các phần khác nhau của mạng lưới thần kinh chuyên môn hóa các nhiệm vụ khác nhau, phân chia khối lượng công việc cho nhiều chuyên gia một cách hiệu quả. Cách tiếp cận này cho phép đào tạo và triển khai hiệu quả các mô hình lớn hơn so với các kiến ​​trúc truyền thống.

Một trong những ưu điểm chính của kiến ​​trúc MoE là khả năng mở rộng của nó. Bằng cách phân bổ khối lượng công việc cho nhiều chuyên gia, các mô hình MoE có thể được đào tạo trên các tập dữ liệu lớn hơn và đạt được hiệu suất tốt hơn so với các mô hình truyền thống có cùng quy mô. Ngoài ra, các mô hình MoE có thể hiệu quả hơn trong quá trình suy luận vì chỉ cần kích hoạt một nhóm nhỏ chuyên gia cho một đầu vào nhất định.

Để biết thêm thông tin về Mixtral-8x7B Hướng dẫn trên AWS, hãy tham khảo Mixtral-8x7B hiện có sẵn trong Amazon SageMaker JumpStart. Mô hình Mixtral-8x7B được cung cấp theo giấy phép Apache 2.0 cho phép sử dụng mà không bị hạn chế.

Trong bài đăng này, chúng tôi thảo luận về cách bạn có thể sử dụng LangChain để tạo ra các ứng dụng RAG hiệu quả và hiệu quả hơn. LangChain là thư viện Python mã nguồn mở được thiết kế để xây dựng các ứng dụng với LLM. Nó cung cấp một khung mô-đun và linh hoạt để kết hợp LLM với các thành phần khác, chẳng hạn như cơ sở kiến ​​thức, hệ thống truy xuất và các công cụ AI khác, để tạo ra các ứng dụng mạnh mẽ và có thể tùy chỉnh.

Chúng tôi hướng dẫn cách xây dựng đường dẫn RAG trên SageMaker bằng Mixtral-8x7B. Chúng tôi sử dụng mô hình tạo văn bản Mixtral-8x7B Instruct với mô hình nhúng BGE Large En để tạo hệ thống QnA hiệu quả bằng RAG trên sổ ghi chép SageMaker. Chúng tôi sử dụng phiên bản ml.t3.medium để chứng minh việc triển khai LLM thông qua SageMaker JumpStart, phiên bản này có thể được truy cập thông qua điểm cuối API do SageMaker tạo. Thiết lập này cho phép khám phá, thử nghiệm và tối ưu hóa các kỹ thuật RAG tiên tiến với LangChain. Chúng tôi cũng minh họa việc tích hợp cửa hàng Nhúng FAISS vào quy trình làm việc RAG, nêu bật vai trò của nó trong việc lưu trữ và truy xuất các phần nhúng để nâng cao hiệu suất của hệ thống.

Chúng tôi thực hiện hướng dẫn ngắn gọn về sổ ghi chép SageMaker. Để biết thêm hướng dẫn chi tiết và từng bước, hãy tham khảo Các mẫu RAG nâng cao với Mixtral trên SageMaker Jumpstart GitHub repo.

Sự cần thiết của các mẫu RAG nâng cao

Các mẫu RAG nâng cao là điều cần thiết để cải thiện khả năng hiện tại của LLM trong việc xử lý, hiểu và tạo ra văn bản giống con người. Khi kích thước và độ phức tạp của tài liệu tăng lên, việc thể hiện nhiều khía cạnh của tài liệu trong một lần nhúng có thể dẫn đến mất tính cụ thể. Mặc dù việc nắm bắt được bản chất chung của một tài liệu là điều cần thiết nhưng việc nhận biết và thể hiện các bối cảnh phụ khác nhau trong đó cũng quan trọng không kém. Đây là một thách thức bạn thường gặp phải khi làm việc với các tài liệu lớn hơn. Một thách thức khác với RAG là khi truy xuất, bạn không biết các truy vấn cụ thể mà hệ thống lưu trữ tài liệu của bạn sẽ xử lý khi nhập. Điều này có thể dẫn đến thông tin phù hợp nhất với truy vấn bị ẩn dưới văn bản (tràn ngữ cảnh). Để giảm thiểu lỗi và cải thiện kiến ​​trúc RAG hiện có, bạn có thể sử dụng các mẫu RAG nâng cao (trình truy xuất tài liệu gốc và nén theo ngữ cảnh) để giảm lỗi truy xuất, nâng cao chất lượng câu trả lời và cho phép xử lý câu hỏi phức tạp.

Với các kỹ thuật được thảo luận trong bài đăng này, bạn có thể giải quyết các thách thức chính liên quan đến việc tích hợp và truy xuất kiến ​​thức bên ngoài, cho phép ứng dụng của bạn đưa ra các phản hồi chính xác hơn và nhận biết theo ngữ cảnh hơn.

Trong các phần sau đây, chúng ta khám phá cách trình truy xuất tài liệu gốcnén theo ngữ cảnh có thể giúp bạn giải quyết một số vấn đề mà chúng ta đã thảo luận.

Trình truy xuất tài liệu gốc

Trong phần trước, chúng tôi đã nêu bật những thách thức mà ứng dụng RAG gặp phải khi xử lý các tài liệu mở rộng. Để giải quyết những thách thức này, trình truy xuất tài liệu gốc phân loại và chỉ định các tài liệu đến như tài liệu phụ huynh. Những tài liệu này được công nhận vì tính chất toàn diện nhưng không được sử dụng trực tiếp ở dạng ban đầu để nhúng. Thay vì nén toàn bộ tài liệu vào một lần nhúng duy nhất, trình truy xuất tài liệu gốc sẽ phân tích các tài liệu gốc này thành tài liệu con. Mỗi tài liệu con nắm bắt các khía cạnh hoặc chủ đề riêng biệt từ tài liệu gốc rộng hơn. Sau khi xác định các phân đoạn con này, các phần nhúng riêng lẻ được gán cho từng phân đoạn, nắm bắt được bản chất chủ đề cụ thể của chúng (xem sơ đồ sau). Trong quá trình truy xuất, tài liệu gốc được gọi. Kỹ thuật này cung cấp khả năng tìm kiếm có mục tiêu nhưng trên phạm vi rộng, cung cấp cho LLM một góc nhìn rộng hơn. Trình truy xuất tài liệu gốc cung cấp cho LLM lợi thế gấp đôi: tính đặc hiệu của việc nhúng tài liệu con để truy xuất thông tin chính xác và có liên quan, cùng với việc gọi tài liệu gốc để tạo phản hồi, giúp làm phong phú thêm kết quả đầu ra của LLM với bối cảnh nhiều lớp và kỹ lưỡng.

Nén theo ngữ cảnh

Để giải quyết vấn đề tràn ngữ cảnh đã thảo luận trước đó, bạn có thể sử dụng nén theo ngữ cảnh để nén và lọc các tài liệu được truy xuất phù hợp với ngữ cảnh của truy vấn, do đó chỉ những thông tin thích hợp mới được lưu giữ và xử lý. Điều này đạt được thông qua sự kết hợp giữa trình truy xuất cơ sở để tìm nạp tài liệu ban đầu và trình nén tài liệu để tinh chỉnh các tài liệu này bằng cách giảm bớt nội dung của chúng hoặc loại trừ chúng hoàn toàn dựa trên mức độ liên quan, như được minh họa trong sơ đồ sau. Cách tiếp cận hợp lý này, được hỗ trợ bởi trình truy xuất nén theo ngữ cảnh, giúp nâng cao đáng kể hiệu quả của ứng dụng RAG bằng cách cung cấp phương pháp trích xuất và chỉ sử dụng những gì cần thiết từ khối lượng lớn thông tin. Nó giải quyết vấn đề quá tải thông tin và xử lý dữ liệu không liên quan trực tiếp, dẫn đến chất lượng phản hồi được cải thiện, hoạt động LLM hiệu quả hơn về mặt chi phí và quy trình truy xuất tổng thể mượt mà hơn. Về cơ bản, đây là một bộ lọc giúp điều chỉnh thông tin phù hợp với truy vấn, khiến nó trở thành công cụ rất cần thiết cho các nhà phát triển muốn tối ưu hóa ứng dụng RAG của họ để có hiệu suất tốt hơn và sự hài lòng của người dùng.

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

Nếu bạn mới làm quen với SageMaker, hãy tham khảo Hướng dẫn phát triển Amazon SageMaker.

Trước khi bạn bắt đầu với giải pháp, tạo tài khoản AWS. Khi tạo tài khoản AWS, bạn sẽ nhận được danh tính đăng nhập một lần (SSO) có toàn quyền truy cập vào tất cả các dịch vụ và tài nguyên AWS trong tài khoản. Danh tính này được gọi là tài khoản AWS người dùng root.

Đăng nhập vào Bảng điều khiển quản lý AWS bằng cách sử dụng địa chỉ email và mật khẩu mà bạn đã sử dụng để tạo tài khoản, bạn sẽ có quyền truy cập đầy đủ vào tất cả các tài nguyên AWS trong tài khoản của mình. Chúng tôi thực sự khuyên bạn không nên sử dụng người dùng root cho các tác vụ hàng ngày, ngay cả những tác vụ quản trị.

Thay vào đó, hãy tuân theo thực tiễn tốt nhất về bảo mật in Quản lý truy cập và nhận dạng AWS (Tôi và tạo một người dùng và nhóm quản trị. Sau đó, khóa an toàn thông tin đăng nhập của người dùng root và chỉ sử dụng chúng để thực hiện một số tác vụ quản lý tài khoản và dịch vụ.

Mô hình Mixtral-8x7b yêu cầu phiên bản ml.g5.48xlarge. SageMaker JumpStart cung cấp một cách đơn giản để truy cập và triển khai hơn 100 mô hình nền tảng nguồn mở và bên thứ ba khác nhau. Để khởi chạy điểm cuối để lưu trữ Mixtral-8x7B từ SageMaker JumpStart, bạn có thể cần yêu cầu tăng hạn mức dịch vụ để truy cập vào phiên bản ml.g5.48xlarge dành cho việc sử dụng điểm cuối. Bạn có thể yêu cầu tăng hạn mức dịch vụ thông qua bảng điều khiển, Giao diện dòng lệnh AWS (AWS CLI) hoặc API để cho phép truy cập vào các tài nguyên bổ sung đó.

Thiết lập phiên bản sổ ghi chép SageMaker và cài đặt các phần phụ thuộc

Để bắt đầu, hãy tạo phiên bản sổ ghi chép SageMaker và cài đặt các phần phụ thuộc cần thiết. Tham khảo đến Repo GitHub để đảm bảo thiết lập thành công. Sau khi thiết lập phiên bản sổ ghi chép, bạn có thể triển khai mô hình.

Bạn cũng có thể chạy sổ ghi chép cục bộ trên môi trường phát triển tích hợp (IDE) ưa thích của mình. Đảm bảo rằng bạn đã cài đặt lab sổ ghi chép Jupyter.

Triển khai mô hình

Triển khai mô hình LLM hướng dẫn Mixtral-8X7B trên SageMaker JumpStart:

# Import the JumpStartModel class from the SageMaker JumpStart library
from sagemaker.jumpstart.model import JumpStartModel

# Specify the model ID for the HuggingFace Mixtral 8x7b Instruct LLM model
model_id = "huggingface-llm-mixtral-8x7b-instruct"
model = JumpStartModel(model_id=model_id)
llm_predictor = model.deploy()

Triển khai mô hình nhúng BGE Large En trên SageMaker JumpStart:

# Specify the model ID for the HuggingFace BGE Large EN Embedding model
model_id = "huggingface-sentencesimilarity-bge-large-en"
text_embedding_model = JumpStartModel(model_id=model_id)
embedding_predictor = text_embedding_model.deploy()

Thiết lập LangChain

Sau khi nhập tất cả các thư viện cần thiết và triển khai mô hình Mixtral-8x7B cũng như mô hình nhúng BGE Large En, giờ đây bạn có thể thiết lập LangChain. Để biết hướng dẫn từng bước, hãy tham khảo Repo GitHub.

Chuẩn bị dữ liệu

Trong bài đăng này, chúng tôi sử dụng Thư gửi cổ đông của Amazon trong vài năm làm kho văn bản để thực hiện QnA. Để biết thêm các bước chi tiết để chuẩn bị dữ liệu, hãy tham khảo Repo GitHub.

Câu trả lời câu hỏi

Sau khi dữ liệu được chuẩn bị, bạn có thể sử dụng trình bao bọc do LangChain cung cấp, bao bọc xung quanh kho lưu trữ vectơ và nhận đầu vào cho LLM. Trình bao bọc này thực hiện các bước sau:

  1. Lấy câu hỏi đầu vào.
  2. Tạo một câu hỏi nhúng.
  3. Lấy các tài liệu liên quan.
  4. Kết hợp các tài liệu và câu hỏi vào một lời nhắc.
  5. Gọi mô hình bằng lời nhắc và tạo câu trả lời theo cách dễ đọc.

Bây giờ kho vector đã sẵn sàng, bạn có thể bắt đầu đặt câu hỏi:

prompt_template = """<s>[INST]
{query}
[INST]"""
PROMPT = PromptTemplate(
    template=prompt_template, input_variables=["query"]
)
query = "How has AWS evolved?"
answer = wrapper_store_faiss.query(question=PROMPT.format(query=query), llm=llm)
print(answer)
AWS, or Amazon Web Services, has evolved significantly since its initial launch in 2006. It started as a feature-poor service, offering only one instance size, in one data center, in one region of the world, with Linux operating system instances only. There was no monitoring, load balancing, auto-scaling, or persistent storage at the time. However, AWS had a successful launch and has since grown into a multi-billion-dollar service.

Over the years, AWS has added numerous features and services, with over 3,300 new ones launched in 2022 alone. They have expanded their offerings to include Windows, monitoring, load balancing, auto-scaling, and persistent storage. AWS has also made significant investments in long-term inventions that have changed what's possible in technology infrastructure.

One example of this is their investment in chip development. AWS has also seen a robust new customer pipeline and active migrations, with many companies opting to move to AWS for the agility, innovation, cost-efficiency, and security benefits it offers. AWS has transformed how customers, from start-ups to multinational companies to public sector organizations, manage their technology infrastructure.

Chuỗi tha mồi thông thường

Trong tình huống trước, chúng tôi đã khám phá cách nhanh chóng và đơn giản để nhận được câu trả lời phù hợp với ngữ cảnh cho câu hỏi của bạn. Bây giờ, hãy xem xét một tùy chọn có thể tùy chỉnh hơn với sự trợ giúp của RetrievalQA, nơi bạn có thể tùy chỉnh cách thêm tài liệu được tìm nạp vào lời nhắc bằng cách sử dụng tham số chain_type. Ngoài ra, để kiểm soát số lượng tài liệu liên quan sẽ được truy xuất, bạn có thể thay đổi tham số k trong đoạn mã sau để xem các kết quả đầu ra khác nhau. Trong nhiều trường hợp, bạn có thể muốn biết LLM đã sử dụng tài liệu nguồn nào để tạo ra câu trả lời. Bạn có thể lấy những tài liệu đó ở đầu ra bằng cách sử dụng return_source_documents, trả về các tài liệu được thêm vào ngữ cảnh của lời nhắc LLM. RetrievalQA cũng cho phép bạn cung cấp mẫu lời nhắc tùy chỉnh có thể dành riêng cho mô hình.

from langchain.chains import RetrievalQA

prompt_template = """<s>[INST]
Use the following pieces of context to provide a concise answer to the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.

{context}

Question: {question}

[INST]"""
PROMPT = PromptTemplate(
    template=prompt_template, input_variables=["context", "question"]
)

qa = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=vectorstore_faiss.as_retriever(
        search_type="similarity", search_kwargs={"k": 3}
    ),
    return_source_documents=True,
    chain_type_kwargs={"prompt": PROMPT}
)

Hãy đặt một câu hỏi:

query = "How did AWS evolve?"
result = qa({"query": query})
print(result['result'])
AWS (Amazon Web Services) evolved from an initially unprofitable investment to an $85B annual revenue run rate business with strong profitability, offering a wide range of services and features, and becoming a significant part of Amazon's portfolio. Despite facing skepticism and short-term headwinds, AWS continued to innovate, attract new customers, and migrate active customers, offering benefits such as agility, innovation, cost-efficiency, and security. AWS also expanded its long-term investments, including chip development, to provide new capabilities and change what's possible for its customers.

Chuỗi truy xuất tài liệu gốc

Hãy xem xét tùy chọn RAG nâng cao hơn với sự trợ giúp của ParentDocumentRetriever. Khi làm việc với việc truy xuất tài liệu, bạn có thể gặp phải sự cân bằng giữa việc lưu trữ các phần nhỏ của tài liệu để nhúng chính xác và các tài liệu lớn hơn để bảo toàn nhiều ngữ cảnh hơn. Trình truy xuất tài liệu gốc đạt được sự cân bằng đó bằng cách chia nhỏ và lưu trữ các khối dữ liệu nhỏ.

Chúng tôi sử dụng parent_splitter để chia tài liệu gốc thành các phần lớn hơn gọi là tài liệu gốc và một child_splitter để tạo các tài liệu con nhỏ hơn từ các tài liệu gốc:

# This text splitter is used to create the parent documents
parent_splitter = RecursiveCharacterTextSplitter(chunk_size=2000)

# This text splitter is used to create the child documents
# It should create documents smaller than the parent
child_splitter = RecursiveCharacterTextSplitter(chunk_size=400)

# The vectorstore to use to index the child chunks
vectorstore_faiss = FAISS.from_documents(
    child_splitter.split_documents(documents),
    sagemaker_embeddings,
)

Các tài liệu con sau đó được lập chỉ mục trong kho lưu trữ vectơ bằng cách sử dụng các phần nhúng. Điều này cho phép truy xuất hiệu quả các tài liệu con có liên quan dựa trên sự giống nhau. Để truy xuất thông tin liên quan, trước tiên trình truy xuất tài liệu gốc sẽ tìm nạp các tài liệu con từ kho lưu trữ vectơ. Sau đó, nó tra cứu ID gốc của các tài liệu con đó và trả về các tài liệu gốc lớn hơn tương ứng.

qa = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=retriever,
    return_source_documents=True,
    chain_type_kwargs={"prompt": PROMPT}
)

Hãy đặt một câu hỏi:

query = "How did AWS evolve?"
result = qa({"query": query})
print(result['result'])
AWS (Amazon Web Services) started with a feature-poor initial launch of the Elastic Compute Cloud (EC2) service in 2006, providing only one instance size, in one data center, in one region of the world, with Linux operating system instances only, and without many key features like monitoring, load balancing, auto-scaling, or persistent storage. However, AWS's success allowed them to quickly iterate and add the missing capabilities, eventually expanding to offer various flavors, sizes, and optimizations of compute, storage, and networking, as well as developing their own chips (Graviton) to push price and performance further. AWS's iterative innovation process required significant investments in financial and people resources over 20 years, often well in advance of when it would pay out, to meet customer needs and improve long-term customer experiences, loyalty, and returns for shareholders.

Chuỗi nén theo ngữ cảnh

Hãy xem xét một tùy chọn RAG nâng cao khác có tên nén theo ngữ cảnh. Một thách thức khi truy xuất là chúng tôi thường không biết các truy vấn cụ thể mà hệ thống lưu trữ tài liệu của bạn sẽ gặp phải khi bạn nhập dữ liệu vào hệ thống. Điều này có nghĩa là thông tin phù hợp nhất với truy vấn có thể bị chôn vùi trong tài liệu có nhiều văn bản không liên quan. Việc chuyển toàn bộ tài liệu đó qua ứng dụng của bạn có thể dẫn đến các cuộc gọi LLM tốn kém hơn và phản hồi kém hơn.

Trình truy xuất nén theo ngữ cảnh giải quyết thách thức truy xuất thông tin liên quan từ hệ thống lưu trữ tài liệu, trong đó dữ liệu thích hợp có thể bị chôn vùi trong các tài liệu chứa nhiều văn bản. Bằng cách nén và lọc các tài liệu được truy xuất dựa trên ngữ cảnh truy vấn nhất định, chỉ những thông tin phù hợp nhất mới được trả về.

Để sử dụng trình truy xuất nén theo ngữ cảnh, bạn sẽ cần:

  • Một cơ sở tha mồi – Đây là trình truy xuất ban đầu tìm nạp tài liệu từ hệ thống lưu trữ dựa trên truy vấn
  • Máy nén tài liệu – Thành phần này lấy các tài liệu được truy xuất ban đầu và rút ngắn chúng bằng cách giảm nội dung của từng tài liệu hoặc loại bỏ hoàn toàn các tài liệu không liên quan, sử dụng ngữ cảnh truy vấn để xác định mức độ liên quan

Thêm tính năng nén theo ngữ cảnh bằng trình trích xuất chuỗi LLM

Đầu tiên, hãy bọc con chó tha mồi cơ sở của bạn bằng một ContextualCompressionRetriever. Bạn sẽ thêm một LLMChainExtractor, nó sẽ lặp lại các tài liệu được trả về ban đầu và chỉ trích xuất từ ​​mỗi tài liệu nội dung có liên quan đến truy vấn.

from langchain.retrievers import ContextualCompressionRetrieverfrom langchain.retrievers.document_compressors import LLMChainExtractor

text_splitter = RecursiveCharacterTextSplitter(
    # Set a really small chunk size, just to show.
    chunk_size=1000,
    chunk_overlap=100,
)

docs = text_splitter.split_documents(documents)
retriever = FAISS.from_documents(
    docs,
    sagemaker_embeddings,
).as_retriever()

compressor = LLMChainExtractor.from_llm(llm)
compression_retriever = ContextualCompressionRetriever(
    base_compressor=compressor, base_retriever=retriever
)

compressed_docs = compression_retriever.get_relevant_documents(
    "How was Amazon impacted by COVID-19?"
)

Khởi tạo chuỗi bằng cách sử dụng ContextualCompressionRetriever với một LLMChainExtractor và chuyển lời nhắc thông qua chain_type_kwargs tranh luận.

qa = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=compression_retriever,
    return_source_documents=True,
    chain_type_kwargs={"prompt": PROMPT}
)

Hãy đặt một câu hỏi:

query = "How did AWS evolve?"
result = qa({"query": query})
print(result['result'])
AWS evolved by starting as a small project inside Amazon, requiring significant capital investment and facing skepticism from both inside and outside the company. However, AWS had a head start on potential competitors and believed in the value it could bring to customers and Amazon. AWS made a long-term commitment to continue investing, resulting in over 3,300 new features and services launched in 2022. AWS has transformed how customers manage their technology infrastructure and has become an $85B annual revenue run rate business with strong profitability. AWS has also continuously improved its offerings, such as enhancing EC2 with additional features and services after its initial launch.

Lọc tài liệu bằng bộ lọc chuỗi LLM

Sản phẩm LLMChuỗiBộ Lọc là một trình nén đơn giản hơn một chút nhưng mạnh mẽ hơn, sử dụng chuỗi LLM để quyết định tài liệu nào được truy xuất ban đầu sẽ lọc ra và tài liệu nào sẽ trả về mà không cần thao tác với nội dung tài liệu:

from langchain.retrievers.document_compressors import LLMChainFilter

_filter = LLMChainFilter.from_llm(llm)
compression_retriever = ContextualCompressionRetriever(
    base_compressor=_filter, base_retriever=retriever
)

compressed_docs = compression_retriever.get_relevant_documents(
    "How was Amazon impacted by COVID-19?"
)
print(compressed_docs)

Khởi tạo chuỗi bằng cách sử dụng ContextualCompressionRetriever với một LLMChainFilter và chuyển lời nhắc thông qua chain_type_kwargs tranh luận.

qa = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=compression_retriever,
    return_source_documents=True,
    chain_type_kwargs={"prompt": PROMPT}
)

Hãy đặt một câu hỏi:

query = "How did AWS evolve?"
result = qa({"query": query})
print(result['result'])
AWS (Amazon Web Services) evolved by initially launching feature-poor but iterating quickly based on customer feedback to add necessary capabilities. This approach allowed AWS to launch EC2 in 2006 with limited features and then continuously add new functionalities, such as additional instance sizes, data centers, regions, operating system options, monitoring tools, load balancing, auto-scaling, and persistent storage. Over time, AWS transformed from a feature-poor service to a multi-billion-dollar business by focusing on customer needs, agility, innovation, cost-efficiency, and security. AWS now has an $85B annual revenue run rate and offers over 3,300 new features and services each year, catering to a wide range of customers from start-ups to multinational companies and public sector organizations.

So sánh kết quả

Bảng sau đây so sánh kết quả từ các truy vấn khác nhau dựa trên kỹ thuật.

Kỹ thuật Truy vấn 1 Truy vấn 2 sự so sánh
AWS đã phát triển như thế nào? Tại sao Amazon thành công?
Đầu ra chuỗi Retriever thường xuyên AWS (Amazon Web Services) đã phát triển từ một khoản đầu tư ban đầu không có lãi thành một doanh nghiệp có doanh thu hàng năm là 85 tỷ USD với khả năng sinh lời cao, cung cấp nhiều loại dịch vụ và tính năng, đồng thời trở thành một phần quan trọng trong danh mục đầu tư của Amazon. Mặc dù phải đối mặt với sự hoài nghi và những trở ngại ngắn hạn, AWS vẫn tiếp tục đổi mới, thu hút khách hàng mới và di chuyển những khách hàng đang hoạt động, mang lại những lợi ích như tính linh hoạt, đổi mới, hiệu quả chi phí và bảo mật. AWS cũng mở rộng các khoản đầu tư dài hạn của mình, bao gồm cả phát triển chip, để cung cấp các khả năng mới và thay đổi những gì có thể cho khách hàng của mình. Amazon thành công nhờ liên tục đổi mới và mở rộng sang các lĩnh vực mới như dịch vụ cơ sở hạ tầng công nghệ, thiết bị đọc kỹ thuật số, trợ lý cá nhân điều khiển bằng giọng nói và các mô hình kinh doanh mới như thị trường bên thứ ba. Khả năng mở rộng quy mô hoạt động một cách nhanh chóng, thể hiện qua việc mở rộng nhanh chóng mạng lưới vận chuyển và xử lý đơn hàng, cũng góp phần vào thành công của công ty. Ngoài ra, việc Amazon tập trung vào việc tối ưu hóa và tăng hiệu quả trong các quy trình của mình đã giúp cải thiện năng suất và giảm chi phí. Ví dụ về Amazon Business nêu bật khả năng của công ty trong việc tận dụng thế mạnh thương mại điện tử và hậu cần của mình trong các lĩnh vực khác nhau. Dựa trên các phản hồi từ chuỗi truy xuất thông thường, chúng tôi nhận thấy rằng mặc dù nó cung cấp các câu trả lời dài nhưng lại bị tràn ngữ cảnh và không đề cập đến bất kỳ chi tiết quan trọng nào từ kho dữ liệu liên quan đến việc phản hồi truy vấn được cung cấp. Chuỗi truy xuất thông thường không thể nắm bắt được các sắc thái có chiều sâu hoặc hiểu biết theo ngữ cảnh, có khả năng thiếu các khía cạnh quan trọng của tài liệu.
Đầu ra của trình truy xuất tài liệu gốc AWS (Amazon Web Services) bắt đầu với lần ra mắt dịch vụ Đám mây điện toán đàn hồi (EC2) ban đầu có tính năng kém vào năm 2006, chỉ cung cấp một kích thước phiên bản, trong một trung tâm dữ liệu, ở một khu vực trên thế giới, chỉ với các phiên bản hệ điều hành Linux và không có nhiều tính năng chính như giám sát, cân bằng tải, tự động thay đổi quy mô hoặc lưu trữ liên tục. Tuy nhiên, thành công của AWS cho phép họ nhanh chóng lặp lại và bổ sung các khả năng còn thiếu, cuối cùng mở rộng để cung cấp nhiều loại, kích thước và tối ưu hóa về điện toán, lưu trữ và kết nối mạng, cũng như phát triển chip của riêng họ (Graviton) để đẩy giá và hiệu suất lên cao hơn nữa . Quá trình đổi mới lặp đi lặp lại của AWS yêu cầu đầu tư đáng kể vào nguồn lực tài chính và con người trong hơn 20 năm, thường là trước rất lâu so với thời điểm chi trả, để đáp ứng nhu cầu của khách hàng và cải thiện trải nghiệm lâu dài của khách hàng, lòng trung thành và lợi nhuận cho các cổ đông. Amazon thành công nhờ khả năng không ngừng đổi mới, thích ứng với sự thay đổi của điều kiện thị trường và đáp ứng nhu cầu khách hàng ở nhiều phân khúc thị trường khác nhau. Điều này được thể hiện rõ qua sự thành công của Amazon Business, công ty đã phát triển để mang lại tổng doanh thu hàng năm khoảng 35 tỷ USD bằng cách mang lại sự lựa chọn, giá trị và sự tiện lợi cho khách hàng doanh nghiệp. Các khoản đầu tư của Amazon vào năng lực thương mại điện tử và hậu cần cũng đã cho phép tạo ra các dịch vụ như Mua bằng Prime, giúp người bán có trang web trực tiếp tới người tiêu dùng thúc đẩy chuyển đổi từ lượt xem sang mua hàng. Công cụ truy xuất tài liệu gốc đi sâu hơn vào các chi tiết cụ thể của chiến lược tăng trưởng của AWS, bao gồm quy trình lặp đi lặp lại để bổ sung các tính năng mới dựa trên phản hồi của khách hàng và hành trình chi tiết từ lần ra mắt ban đầu có ít tính năng đến vị trí thống lĩnh thị trường, đồng thời cung cấp phản hồi phù hợp với ngữ cảnh . Các phản hồi bao gồm nhiều khía cạnh, từ đổi mới kỹ thuật và chiến lược thị trường đến hiệu quả của tổ chức và tập trung vào khách hàng, cung cấp cái nhìn toàn diện về các yếu tố góp phần thành công cùng với các ví dụ. Điều này có thể là do khả năng tìm kiếm có mục tiêu nhưng trên phạm vi rộng của trình truy xuất tài liệu gốc.
Trình trích xuất chuỗi LLM: Đầu ra nén theo ngữ cảnh AWS phát triển bằng cách bắt đầu như một dự án nhỏ bên trong Amazon, đòi hỏi vốn đầu tư đáng kể và phải đối mặt với sự hoài nghi từ cả bên trong và bên ngoài công ty. Tuy nhiên, AWS đã có khởi đầu trước các đối thủ tiềm năng và tin tưởng vào giá trị mà nó có thể mang lại cho khách hàng và Amazon. AWS đã cam kết tiếp tục đầu tư lâu dài, dẫn đến hơn 3,300 tính năng và dịch vụ mới được ra mắt vào năm 2022. AWS đã thay đổi cách khách hàng quản lý cơ sở hạ tầng công nghệ của họ và trở thành doanh nghiệp có doanh thu hàng năm là 85 tỷ USD với khả năng sinh lời cao. AWS cũng đã liên tục cải tiến các dịch vụ của mình, chẳng hạn như cải tiến EC2 với các tính năng và dịch vụ bổ sung sau lần ra mắt đầu tiên. Dựa trên bối cảnh được cung cấp, thành công của Amazon có thể nhờ vào việc mở rộng chiến lược từ nền tảng bán sách sang thị trường toàn cầu với hệ sinh thái người bán bên thứ ba sôi động, đầu tư sớm vào AWS, đổi mới trong việc giới thiệu Kindle và Alexa và sự tăng trưởng đáng kể. về doanh thu hàng năm từ năm 2019 đến năm 2022. Sự tăng trưởng này dẫn đến việc mở rộng quy mô trung tâm xử lý đơn hàng, tạo ra mạng lưới vận chuyển chặng cuối và xây dựng mạng lưới trung tâm phân loại mới, được tối ưu hóa để giảm năng suất và giảm chi phí. Trình trích xuất chuỗi LLM duy trì sự cân bằng giữa việc bao quát toàn diện các điểm chính và tránh độ sâu không cần thiết. Nó tự động điều chỉnh theo ngữ cảnh của truy vấn, do đó kết quả đầu ra có liên quan trực tiếp và toàn diện.
Bộ lọc chuỗi LLM: Đầu ra nén theo ngữ cảnh AWS (Amazon Web Services) đã phát triển bằng cách khởi chạy ban đầu với tính năng nghèo nàn nhưng lặp lại nhanh chóng dựa trên phản hồi của khách hàng để bổ sung các khả năng cần thiết. Cách tiếp cận này cho phép AWS ra mắt EC2 vào năm 2006 với các tính năng hạn chế, sau đó liên tục bổ sung các chức năng mới, chẳng hạn như kích thước phiên bản bổ sung, trung tâm dữ liệu, khu vực, tùy chọn hệ điều hành, công cụ giám sát, cân bằng tải, tự động thay đổi quy mô và lưu trữ liên tục. Theo thời gian, AWS đã chuyển đổi từ một dịch vụ có ít tính năng thành một doanh nghiệp trị giá hàng tỷ đô la bằng cách tập trung vào nhu cầu của khách hàng, tính linh hoạt, đổi mới, hiệu quả chi phí và bảo mật. AWS hiện có tỷ lệ doanh thu hàng năm là 85 tỷ USD và cung cấp hơn 3,300 tính năng và dịch vụ mới mỗi năm, phục vụ nhiều đối tượng khách hàng từ công ty khởi nghiệp đến các công ty đa quốc gia và tổ chức khu vực công. Amazon thành công nhờ mô hình kinh doanh sáng tạo, tiến bộ công nghệ liên tục và thay đổi tổ chức chiến lược. Công ty đã liên tục phá vỡ các ngành công nghiệp truyền thống bằng cách giới thiệu những ý tưởng mới, chẳng hạn như nền tảng thương mại điện tử cho nhiều sản phẩm và dịch vụ khác nhau, thị trường bên thứ ba, dịch vụ cơ sở hạ tầng đám mây (AWS), máy đọc sách điện tử Kindle và trợ lý cá nhân điều khiển bằng giọng nói Alexa. . Ngoài ra, Amazon đã thực hiện những thay đổi về cấu trúc để nâng cao hiệu quả, chẳng hạn như tổ chức lại mạng lưới xử lý đơn hàng tại Hoa Kỳ để giảm chi phí và thời gian giao hàng, góp phần hơn nữa vào thành công của công ty. Tương tự như trình trích xuất chuỗi LLM, bộ lọc chuỗi LLM đảm bảo rằng mặc dù đã đề cập đến các điểm chính nhưng đầu ra vẫn hiệu quả đối với những khách hàng đang tìm kiếm câu trả lời ngắn gọn và phù hợp với ngữ cảnh.

Khi so sánh các kỹ thuật khác nhau này, chúng ta có thể thấy rằng trong các bối cảnh như trình bày chi tiết quá trình chuyển đổi của AWS từ một dịch vụ đơn giản sang một thực thể phức tạp trị giá hàng tỷ đô la hoặc giải thích những thành công chiến lược của Amazon, chuỗi truy xuất thông thường thiếu độ chính xác mà các kỹ thuật phức tạp hơn mang lại, dẫn đến thông tin ít được nhắm mục tiêu hơn. Mặc dù có rất ít sự khác biệt giữa các kỹ thuật tiên tiến được thảo luận, nhưng chúng có nhiều thông tin hơn so với các chuỗi chó tha mồi thông thường.

Đối với khách hàng trong các ngành như chăm sóc sức khỏe, viễn thông và dịch vụ tài chính đang tìm cách triển khai RAG trong ứng dụng của họ, những hạn chế của chuỗi truy xuất thông thường trong việc cung cấp độ chính xác, tránh dư thừa và nén thông tin hiệu quả khiến nó ít phù hợp hơn để đáp ứng những nhu cầu này so với đến các kỹ thuật nén theo ngữ cảnh và truy xuất tài liệu gốc tiên tiến hơn. Những kỹ thuật này có thể chắt lọc lượng thông tin khổng lồ thành những hiểu biết tập trung, có tác động mạnh mẽ mà bạn cần, đồng thời giúp cải thiện hiệu suất về giá.

Làm sạch

Khi bạn chạy xong sổ ghi chép, hãy xóa các tài nguyên bạn đã tạo để tránh tích lũy phí cho các tài nguyên đang sử dụng:

# Delete resources
llm_predictor.delete_model()
llm_predictor.delete_endpoint()
embedding_predictor.delete_model()
embedding_predictor.delete_endpoint()

Kết luận

Trong bài đăng này, chúng tôi đã trình bày một giải pháp cho phép bạn triển khai các kỹ thuật chuỗi nén theo ngữ cảnh và trình truy xuất tài liệu gốc để nâng cao khả năng xử lý và tạo thông tin của LLM. Chúng tôi đã thử nghiệm các kỹ thuật RAG tiên tiến này với các mẫu Mixtral-8x7B Instruct và BGE Large En có sẵn với SageMaker JumpStart. Chúng tôi cũng khám phá việc sử dụng bộ lưu trữ liên tục để nhúng và các khối tài liệu cũng như tích hợp với kho dữ liệu doanh nghiệp.

Các kỹ thuật chúng tôi thực hiện không chỉ tinh chỉnh cách các mô hình LLM truy cập và kết hợp kiến ​​thức bên ngoài mà còn cải thiện đáng kể chất lượng, mức độ phù hợp và hiệu quả đầu ra của chúng. Bằng cách kết hợp truy xuất từ ​​kho văn bản lớn với khả năng tạo ngôn ngữ, các kỹ thuật RAG tiên tiến này cho phép LLM tạo ra các phản hồi thực tế, mạch lạc và phù hợp với ngữ cảnh hơn, nâng cao hiệu suất của chúng trên các tác vụ xử lý ngôn ngữ tự nhiên khác nhau.

SageMaker JumpStart là trung tâm của giải pháp này. Với SageMaker JumpStart, bạn có quyền truy cập vào nhiều loại mô hình nguồn mở và nguồn đóng, hợp lý hóa quy trình bắt đầu với ML và cho phép thử nghiệm và triển khai nhanh chóng. Để bắt đầu triển khai giải pháp này, hãy điều hướng đến sổ ghi chép trong Repo GitHub.


Về các tác giả

Niithiyn Vijeaswaran là Kiến trúc sư giải pháp tại AWS. Lĩnh vực trọng tâm của anh ấy là AI tổng hợp và Bộ tăng tốc AI AWS. Ông có bằng Cử nhân Khoa học Máy tính và Tin sinh học. Niithiyn hợp tác chặt chẽ với nhóm Generative AI GTM để hỗ trợ khách hàng AWS trên nhiều mặt trận và đẩy nhanh việc áp dụng Generative AI. Anh ấy là một người hâm mộ cuồng nhiệt của Dallas Mavericks và thích sưu tập giày thể thao.

Sebastian Bustillo là Kiến trúc sư giải pháp tại AWS. Anh ấy tập trung vào các công nghệ AI/ML với niềm đam mê sâu sắc đối với AI tổng hợp và máy gia tốc máy tính. Tại AWS, anh giúp khách hàng khai thác giá trị kinh doanh thông qua AI sáng tạo. Khi không làm việc, anh ấy thích pha một tách cà phê đặc sản hoàn hảo và cùng vợ khám phá thế giới.

Armando Diaz là Kiến trúc sư giải pháp tại AWS. Anh ấy tập trung vào AI tổng quát, AI/ML và Phân tích dữ liệu. Tại AWS, Armando giúp khách hàng tích hợp các khả năng AI tiên tiến vào hệ thống của họ, thúc đẩy sự đổi mới và lợi thế cạnh tranh. Khi không làm việc, anh ấy thích dành thời gian cho vợ và gia đình, đi bộ đường dài và du lịch khắp thế giới.

Tiến sĩ Farooq Sabir là Kiến trúc sư giải pháp chuyên gia trí tuệ nhân tạo và học máy cao cấp tại AWS. Ông có bằng Tiến sĩ và Thạc sĩ Kỹ thuật Điện của Đại học Texas ở Austin và bằng Thạc sĩ Khoa học Máy tính của Viện Công nghệ Georgia. Anh ấy có hơn 15 năm kinh nghiệm làm việc và cũng thích giảng dạy và cố vấn cho sinh viên đại học. Tại AWS, anh giúp khách hàng hình thành và giải quyết các vấn đề kinh doanh của họ trong khoa học dữ liệu, máy học, thị giác máy tính, trí tuệ nhân tạo, tối ưu hóa số học và các lĩnh vực liên quan. Có trụ sở tại Dallas, Texas, anh ấy và gia đình thích đi du lịch và thực hiện các chuyến đi đường dài.

Marco Punio là Kiến trúc sư giải pháp tập trung vào chiến lược AI tổng quát, ứng dụng các giải pháp AI và tiến hành nghiên cứu để giúp khách hàng có quy mô siêu lớn trên AWS. Marco là cố vấn đám mây kỹ thuật số gốc có kinh nghiệm trong lĩnh vực FinTech, Chăm sóc sức khỏe & Khoa học đời sống, Phần mềm dưới dạng dịch vụ và gần đây nhất là trong ngành Viễn thông. Anh ấy là một nhà công nghệ có trình độ với niềm đam mê về học máy, trí tuệ nhân tạo cũng như mua bán và sáp nhập. Marco sống ở Seattle, WA và thích viết, đọc, tập thể dục và xây dựng ứng dụng khi rảnh rỗi.

AJ Dhimine là Kiến trúc sư giải pháp tại AWS. Anh ấy chuyên về AI, máy tính không có máy chủ và phân tích dữ liệu. Anh ấy là thành viên/cố vấn tích cực trong Cộng đồng lĩnh vực kỹ thuật học máy và đã xuất bản một số bài báo khoa học về các chủ đề AI/ML khác nhau. Anh ấy làm việc với khách hàng, từ các công ty khởi nghiệp đến các doanh nghiệp, để phát triển các giải pháp AI có tính sáng tạo tuyệt vời. Anh ấy đặc biệt đam mê việc tận dụng Mô hình ngôn ngữ lớn để phân tích dữ liệu nâng cao và khám phá các ứng dụng thực tế nhằm giải quyết các thách thức trong thế giới thực. Ngoài công việc, AJ thích đi du lịch và hiện có mặt ở 53 quốc gia với mục tiêu đến thăm mọi quốc gia trên thế giới.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img