paint-brush
Cách đánh giá hiệu quả các ứng dụng RAG + LLM của bạntừ tác giả@vndee
1,519 lượt đọc
1,519 lượt đọc

Cách đánh giá hiệu quả các ứng dụng RAG + LLM của bạn

từ tác giả Duy Huynh17m2023/12/27
Read on Terminal Reader

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

Bạn đã bao giờ tự hỏi làm thế nào một số ứng dụng ngày nay có vẻ thông minh đến mức kỳ diệu chưa? Một phần lớn của phép thuật đó đến từ thứ gọi là RAG và LLM.
featured image - Cách đánh giá hiệu quả các ứng dụng RAG + LLM của bạn
Duy Huynh HackerNoon profile picture
0-item
1-item

Này! Bạn đã bao giờ tự hỏi làm thế nào một số ứng dụng ngày nay có vẻ thông minh đến mức kỳ diệu chưa? Một phần lớn của phép thuật đó đến từ thứ gọi là RAG và LLM. Hãy nghĩ về RAG (Thế hệ tăng cường truy xuất) như một con mọt sách thông minh của thế giới AI. Nó tìm hiểu rất nhiều thông tin để tìm ra chính xác những gì cần thiết cho câu hỏi của bạn. Sau đó, có LLM (Mô hình ngôn ngữ lớn), giống như dòng GPT nổi tiếng sẽ tạo ra câu trả lời mượt mà dựa trên khả năng tạo văn bản ấn tượng của nó. Kết hợp cả hai điều này lại với nhau, bạn sẽ có một AI không chỉ thông minh mà còn siêu phù hợp và nhận biết ngữ cảnh. Nó giống như việc kết hợp một trợ lý nghiên cứu siêu nhanh với một người có tài ăn nói hóm hỉnh. Sự kết hợp này thật tuyệt vời cho mọi mục đích, từ việc giúp bạn nhanh chóng tìm thấy thông tin cụ thể cho đến trò chuyện chân thực đến bất ngờ.


Nhưng đây là điều đáng chú ý: Làm thế nào để chúng ta biết liệu AI của chúng ta có thực sự hữu ích chứ không chỉ đưa ra những thuật ngữ hoa mỹ hay không? Đó là lúc cần có sự đánh giá. Nó rất quan trọng chứ không chỉ là thứ có sẵn. Chúng tôi cần đảm bảo rằng AI của chúng tôi không chỉ chính xác mà còn phù hợp, hữu ích và không đi theo hướng kỳ lạ. Rốt cuộc, trợ lý thông minh có ích lợi gì nếu nó không thể hiểu bạn cần gì hoặc đưa ra những câu trả lời không căn cứ?


Đánh giá ứng dụng RAG + LLM của chúng tôi giống như một cuộc kiểm tra thực tế. Nó cho chúng ta biết liệu chúng ta có thực sự đi đúng hướng trong việc tạo ra một AI thực sự hữu ích chứ không chỉ ấn tượng về mặt kỹ thuật hay không. Vì vậy, trong bài đăng này, chúng tôi sẽ đi sâu vào cách thực hiện điều đó – đảm bảo AI của chúng tôi hoạt động tuyệt vời trong thực tế cũng như trên lý thuyết!

Giai đoạn phát triển

Trong giai đoạn phát triển, điều cần thiết là phải suy nghĩ theo quy trình đánh giá mô hình học máy điển hình. Trong thiết lập AI/ML tiêu chuẩn, chúng tôi thường làm việc với một số bộ dữ liệu, chẳng hạn như bộ phát triển, đào tạo và thử nghiệm, đồng thời sử dụng các số liệu định lượng để đánh giá hiệu quả của mô hình. Tuy nhiên, việc đánh giá Mô hình ngôn ngữ lớn (LLM) đặt ra những thách thức đặc biệt. Các số liệu định lượng truyền thống gặp khó khăn trong việc nắm bắt chất lượng đầu ra từ LLM vì những mô hình này vượt trội trong việc tạo ra ngôn ngữ vừa đa dạng vừa sáng tạo. Do đó, rất khó để có một bộ nhãn toàn diện để đánh giá hiệu quả.


Trong giới học thuật, các nhà nghiên cứu có thể sử dụng các điểm chuẩn và điểm số như MMLU để xếp hạng LLM và các chuyên gia về con người có thể được tuyển dụng để đánh giá chất lượng đầu ra của LLM. Tuy nhiên, những phương pháp này không chuyển đổi liền mạch sang môi trường sản xuất, nơi tốc độ phát triển nhanh và các ứng dụng thực tế đòi hỏi kết quả ngay lập tức. Nó không chỉ về hiệu suất LLM; nhu cầu trong thế giới thực có tính đến toàn bộ quá trình, bao gồm truy xuất dữ liệu, soạn thảo nhanh chóng và đóng góp của LLM. Việc tạo ra một tiêu chuẩn do con người quản lý cho mỗi lần lặp lại hệ thống mới hoặc khi có thay đổi về tài liệu hoặc miền là không thực tế. Hơn nữa, tốc độ phát triển nhanh chóng trong ngành không đủ khả năng để người thử nghiệm phải chờ đợi lâu để đánh giá từng bản cập nhật trước khi triển khai. Do đó, việc điều chỉnh các chiến lược đánh giá hoạt động trong giới học thuật để phù hợp với môi trường sản xuất nhanh chóng và tập trung vào kết quả là một thách thức đáng kể.


Vì vậy, nếu rơi vào trường hợp này, bạn có thể nghĩ đến thứ gì đó giống như điểm giả do LLM chính cung cấp. Điểm số này có thể phản ánh sự kết hợp của các số liệu đánh giá tự động và bản chất tinh túy trong phán đoán của con người. Cách tiếp cận kết hợp như vậy nhằm mục đích thu hẹp khoảng cách giữa hiểu biết sâu sắc của người đánh giá con người và phân tích có hệ thống, có thể mở rộng về đánh giá máy.

Chuỗi RAG + LLM


Ví dụ: nếu nhóm của bạn đang phát triển LLM nội bộ được đào tạo về miền và dữ liệu cụ thể của bạn thì quy trình này thường sẽ bao gồm nỗ lực hợp tác từ các nhà phát triển, kỹ sư nhắc nhở và nhà khoa học dữ liệu. Mỗi thành viên đều đóng một vai trò quan trọng:

  • Nhà phát triển là kiến trúc sư. Họ xây dựng khung của ứng dụng, đảm bảo chuỗi RAG + LLM được tích hợp liền mạch và có thể điều hướng qua các tình huống khác nhau một cách dễ dàng.

  • Kỹ sư nhanh chóng là những người sáng tạo. Họ nghĩ ra các kịch bản và lời nhắc mô phỏng tương tác của người dùng trong thế giới thực. Họ suy nghĩ về "điều gì sẽ xảy ra nếu" và thúc đẩy hệ thống giải quyết nhiều chủ đề và câu hỏi khác nhau.

  • Các nhà khoa học dữ liệu là những nhà chiến lược. Họ phân tích các câu trả lời, đi sâu vào dữ liệu và sử dụng chuyên môn thống kê của mình để đánh giá xem hiệu suất của AI có đạt yêu cầu hay không.


Vòng phản hồi ở đây là cần thiết. Khi AI của chúng tôi phản hồi các lời nhắc, nhóm sẽ xem xét kỹ lưỡng mọi kết quả đầu ra. AI có hiểu câu hỏi không? Câu trả lời có chính xác và phù hợp không? Ngôn ngữ có thể mượt mà hơn? Phản hồi này sau đó được lặp lại vào hệ thống để cải tiến.


Để nâng cao điều này, hãy tưởng tượng sử dụng LLM chính như GPT-4 của OpenAI làm điểm chuẩn để đánh giá LLM tự phát triển của bạn. Bạn đặt mục tiêu sánh ngang hoặc thậm chí vượt qua hiệu suất của dòng GPT, vốn nổi tiếng về độ bền và tính linh hoạt. Đây là cách bạn có thể tiến hành:

  • Tạo tập dữ liệu có liên quan: Bắt đầu bằng cách tạo tập dữ liệu phản ánh các sắc thái của miền của bạn. Tập dữ liệu này có thể được các chuyên gia quản lý hoặc tổng hợp với sự trợ giúp của GPT-4 để tiết kiệm thời gian, đảm bảo phù hợp với tiêu chuẩn vàng của bạn.

  • Xác định số liệu để thành công: Tận dụng điểm mạnh của LLM chính để hỗ trợ xác định số liệu của bạn. Bạn có quyền tự do lựa chọn các số liệu phù hợp nhất với mục tiêu của mình, vì LLM chính có thể xử lý các nhiệm vụ phức tạp hơn. Trong tiêu chuẩn cộng đồng, bạn có thể muốn xem một số công việc từ Langchain và một số thư viện khác như ragas . Họ có một số số liệu như Độ trung thực, thu hồi ngữ cảnh, độ chính xác của ngữ cảnh, độ tương tự của câu trả lời, v.v.

  • Tự động hóa quy trình đánh giá của bạn: Để bắt kịp các chu kỳ phát triển nhanh chóng, hãy thiết lập quy trình đánh giá tự động. Điều này sẽ đánh giá nhất quán hiệu suất của ứng dụng so với các số liệu được xác định trước của bạn sau mỗi lần cập nhật hoặc thay đổi. Bằng cách tự động hóa quy trình, bạn đảm bảo rằng việc đánh giá của bạn không chỉ kỹ lưỡng mà còn lặp lại một cách hiệu quả, cho phép tối ưu hóa và sàng lọc nhanh chóng.


Ví dụ: trong phần trình diễn sau, tôi sẽ chỉ cho bạn cách tự động đánh giá các LLM nguồn mở khác nhau trong một tác vụ hội thoại truy xuất tài liệu đơn giản bằng GPT-4 của OpenAI.


Đầu tiên, chúng tôi sử dụng OpenAI GPT-4 để tạo tập dữ liệu tổng hợp có nguồn gốc từ một tài liệu như dưới đây:

 import os import json import pandas as pd from dataclasses import dataclass from langchain.chat_models import ChatOpenAI from langchain.chains import LLMChain from langchain.prompts import PromptTemplate from langchain.document_loaders import PyPDFLoader from langchain.text_splitter import CharacterTextSplitter from langchain.output_parsers import JsonOutputToolsParser, PydanticOutputParser from langchain.prompts import ChatPromptTemplate, HumanMessagePromptTemplate QA_DATASET_GENERATION_PROMPT = PromptTemplate.from_template( "You are an expert on generate question-and-answer dataset based on a given context. You are given a context. " "Your task is to generate a question and answer based on the context. The generated question should be able to" " to answer by leverage the given context. And the generated question-and-answer pair must be grammatically " "and semantically correct. Your response must be in a json format with 2 keys: question, answer. For example," "\n\n" "Context: France, in Western Europe, encompasses medieval cities, alpine villages and Mediterranean beaches. Paris, its capital, is famed for its fashion houses, classical art museums including the Louvre and monuments like the Eiffel Tower." "\n\n" "Response: {{" "\n" " \"question\": \"Where is France and what is it's capital?\"," "\n" " \"answer\": \"France is in Western Europe and it's capital is Paris.\"" "\n" "}}" "\n\n" "Context: The University of California, Berkeley is a public land-grant research university in Berkeley, California. Established in 1868 as the state's first land-grant university, it was the first campus of the University of California system and a founding member of the Association of American Universities." "\n\n" "Response: {{" "\n" " \"question\": \"When was the University of California, Berkeley established?\"," "\n" " \"answer\": \"The University of California, Berkeley was established in 1868.\"" "\n" "}}" "\n\n" "Now your task is to generate a question-and-answer dataset based on the following context:" "\n\n" "Context: {context}" "\n\n" "Response: ", ) OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") if OPENAI_API_KEY is None: raise ValueError("OPENAI_API_KEY is not set") llm = ChatOpenAI( model="gpt-4-1106-preview", api_key=OPENAI_API_KEY, temperature=0.7, response_format={ "type": "json_object" }, ) chain = LLMChain( prompt=QA_DATASET_GENERATION_PROMPT, llm=llm ) file_loader = PyPDFLoader("./data/cidr_lakehouse.pdf") text_splitter = CharacterTextSplitter(chunk_size=1000) chunks = text_splitter.split_documents(file_loader.load()) questions, answers = [], [] for chunk in chunks: for _ in range(2): response = chain.invoke({ "context": chunk }) obj = json.loads(response["text"]) questions.append(obj["question"]) answers.append(obj["answer"]) df = pd.DataFrame({ "question": questions, "answer": answers }) df.to_csv("./data/cidr_lakehouse_qa.csv", index=False)


Sau khi chạy mã được đề cập ở trên, kết quả là chúng tôi nhận được tệp CSV. Tệp này chứa các cặp câu hỏi và câu trả lời liên quan đến tài liệu chúng tôi nhập vào, như sau:

Kho dữ liệu QA tổng hợp cho bài viết "Lakehouse: Một thế hệ nền tảng mở mới hợp nhất kho dữ liệu và phân tích nâng cao".


Sau đó, chúng tôi xây dựng chuỗi DocumentRetrievalQA đơn giản bằng cách sử dụng Langchain và thay thế trong một số LLM nguồn mở hoạt động cục bộ thông qua Ollama. Bạn có thể tìm thấy hướng dẫn trước đây của tôi về điều đó ở đây.

 from tqdm import tqdm from langchain.chains import RetrievalQA from langchain.chat_models import ChatOllama from langchain.vectorstores import FAISS from langchain.embeddings import HuggingFaceEmbeddings vector_store = FAISS.from_documents(chunks, HuggingFaceEmbeddings()) retriever = vector_store.as_retriever() def test_local_retrieval_qa(model: str): chain = RetrievalQA.from_llm( llm=ChatOllama(model=model), retriever=retriever, ) predictions = [] for it, row in tqdm(df.iterrows(), total=len(df)): resp = chain.invoke({ "query": row["question"] }) predictions.append(resp["result"]) df[f"{model}_result"] = predictions test_local_retrieval_qa("mistral") test_local_retrieval_qa("llama2") test_local_retrieval_qa("zephyr") test_local_retrieval_qa("orca-mini") test_local_retrieval_qa("phi") df.to_csv("./data/cidr_lakehouse_qa_retrieval_prediction.csv", index=False)


Tóm lại, đoạn mã trên thiết lập một chuỗi truy xuất tài liệu đơn giản. Chúng tôi thực hiện chuỗi này bằng cách sử dụng một số mô hình, chẳng hạn như Mistral, Llama2, Zephyr, Orca-mini và Phi. Do đó, chúng tôi thêm năm cột bổ sung vào DataFrame hiện có của mình để lưu trữ kết quả dự đoán của từng mô hình LLM.

Kết quả dự đoán QA.


Bây giờ, hãy xác định chuỗi chính bằng GPT-4 của OpenAI để đánh giá kết quả dự đoán. Trong thiết lập này, chúng tôi sẽ tính điểm chính xác tương tự như điểm F1 gần đúng, như thường thấy trong các bài toán AI/ML truyền thống. Để thực hiện điều này, chúng tôi sẽ áp dụng các khái niệm song song như Dương tính thật (TP), Dương tính giả (FP) và Âm tính giả (FN), được định nghĩa như sau:


  • TP: Những tuyên bố có trong cả câu trả lời và sự thật cơ bản.
  • FP: Những tuyên bố có trong câu trả lời nhưng không có trong sự thật căn bản.
  • FN: Các tuyên bố liên quan được tìm thấy trong sự thật cơ bản nhưng bị bỏ qua trong câu trả lời.


Với những định nghĩa này, chúng ta có thể tính toán độ chính xác, khả năng thu hồi và điểm F1 bằng các công thức bên dưới:

Điểm F1 bằng công thức


 import os import numpy as np import pandas as pd from tqdm import tqdm from langchain.chains import LLMChain from langchain.chat_models import ChatOpenAI from langchain.prompts import PromptTemplate OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") if OPENAI_API_KEY is None: raise ValueError("OPENAI_API_KEY is not set") CORRECTNESS_PROMPT = PromptTemplate.from_template( """ Extract following from given question and ground truth. Your response must be in a json format with 3 keys and does not need to be in any specific order: - statements that are present in both the answer and the ground truth - statements present in the answer but not found in the ground truth - relevant statements found in the ground truth but omitted in the answer Please be concise and do not include any unnecessary information. You should classify the statements as claims, facts, or opinions with semantic matching, no need exact word-by-word matching. Question:What powers the sun and what is its primary function? Answer: The sun is powered by nuclear fission, similar to nuclear reactors on Earth, and its primary function is to provide light to the solar system. Ground truth: The sun is actually powered by nuclear fusion, not fission. In its core, hydrogen atoms fuse to form helium, releasing a tremendous amount of energy. This energy is what lights up the sun and provides heat and light, essential for life on Earth. The sun's light also plays a critical role in Earth's climate system and helps to drive the weather and ocean currents. Extracted statements: [ {{ "statements that are present in both the answer and the ground truth": ["The sun's primary function is to provide light"], "statements present in the answer but not found in the ground truth": ["The sun is powered by nuclear fission", "similar to nuclear reactors on Earth"], "relevant statements found in the ground truth but omitted in the answer": ["The sun is powered by nuclear fusion, not fission", "In its core, hydrogen atoms fuse to form helium, releasing a tremendous amount of energy", "This energy provides heat and light, essential for life on Earth", "The sun's light plays a critical role in Earth's climate system", "The sun helps to drive the weather and ocean currents"] }} ] Question: What is the boiling point of water? Answer: The boiling point of water is 100 degrees Celsius at sea level. Ground truth: The boiling point of water is 100 degrees Celsius (212 degrees Fahrenheit) at sea level, but it can change with altitude. Extracted statements: [ {{ "statements that are present in both the answer and the ground truth": ["The boiling point of water is 100 degrees Celsius at sea level"], "statements present in the answer but not found in the ground truth": [], "relevant statements found in the ground truth but omitted in the answer": ["The boiling point can change with altitude", "The boiling point of water is 212 degrees Fahrenheit at sea level"] }} ] Question: {question} Answer: {answer} Ground truth: {ground_truth} Extracted statements:""", ) judy_llm = ChatOpenAI( model="gpt-4-1106-preview", api_key=OPENAI_API_KEY, temperature=0.0, response_format={ "type": "json_object" }, ) judy_chain = LLMChain( prompt=CORRECTNESS_PROMPT, llm=judy_llm ) def evaluate_correctness(column_name: str): chain = LLMChain( prompt=CORRECTNESS_PROMPT, llm=ChatOpenAI( model="gpt-4-1106-preview", api_key=OPENAI_API_KEY, temperature=0.0, response_format={ "type": "json_object" }, ) ) key_map = { "TP": "statements that are present in both the answer and the ground truth", "FP": "statements present in the answer but not found in the ground truth", "FN": "relevant statements found in the ground truth but omitted in the answer", # noqa: E501 } TP, FP, FN = [], [], [] for it, row in tqdm(df.iterrows(), total=len(df)): resp = chain.invoke({ "question": row["question"], "answer": row[column_name], "ground_truth": row["answer"] }) obj = json.loads(resp["text"]) TP.append(len(obj[key_map["TP"]])) FP.append(len(obj[key_map["FP"]])) FN.append(len(obj[key_map["FN"]])) # convert to numpy array TP = np.array(TP) FP = np.array(FP) FN = np.array(FN) df[f"{column_name}_recall"] = TP / (TP + FN) df[f"{column_name}_precision"] = TP / (TP + FP) df[f"{column_name}_correctness"] = 2 * df[f"{column_name}_recall"] * df[f"{column_name}_precision"] / (df[f"{column_name}_recall"] + df[f"{column_name}_precision"]) evaluate_correctness("mistral_result") evaluate_correctness("llama2_result") evaluate_correctness("zephyr_result") evaluate_correctness("orca-mini_result") evaluate_correctness("phi_result") print("|====Model====|=== Recall ===|== Precision ==|== Correctness ==|") print(f"|mistral | {df['mistral_result_recall'].mean():.4f} | {df['mistral_result_precision'].mean():.4f} | {df['mistral_result_correctness'].mean():.4f} |") print(f"|llama2 | {df['llama2_result_recall'].mean():.4f} | {df['llama2_result_precision'].mean():.4f} | {df['llama2_result_correctness'].mean():.4f} |") print(f"|zephyr | {df['zephyr_result_recall'].mean():.4f} | {df['zephyr_result_precision'].mean():.4f} | {df['zephyr_result_correctness'].mean():.4f} |") print(f"|orca-mini | {df['orca-mini_result_recall'].mean():.4f} | {df['orca-mini_result_precision'].mean():.4f} | {df['orca-mini_result_correctness'].mean():.4f} |") print(f"|phi | {df['phi_result_recall'].mean():.4f} | {df['phi_result_precision'].mean():.4f} | {df['phi_result_correctness'].mean():.4f} |") print("|==============================================================|") df.to_csv("./data/cidr_lakehouse_qa_retrieval_prediction_correctness.csv", index=False) 


Kết quả


Được rồi, bây giờ chúng ta đã có một điểm chuẩn đơn giản cho một số mô hình. Đây có thể được coi là chỉ báo sơ bộ về cách mỗi mô hình xử lý tác vụ truy xuất tài liệu. Mặc dù những số liệu này cung cấp một cái nhìn tổng quan nhưng chúng mới chỉ là phần mở đầu của câu chuyện. Chúng đóng vai trò là cơ sở để hiểu mô hình nào tốt hơn trong việc truy xuất thông tin chính xác và phù hợp từ một kho văn bản nhất định. Bạn có thể tìm thấy mã nguồn ở đây .

Phản hồi của con người trong vòng lặp

Khi nói đến việc điều chỉnh AI của chúng tôi thông qua Phản hồi của con người trong vòng lặp, sức mạnh tổng hợp giữa những người thử nghiệm là con người và LLM chính là yếu tố then chốt. Mối quan hệ này không chỉ đơn thuần là thu thập phản hồi mà còn là việc tạo ra một hệ thống AI phản ứng nhanh, thích ứng và học hỏi từ đầu vào của con người.

Quá trình tương tác

  • Đầu vào của Người kiểm tra: Người kiểm tra tham gia vào Chuỗi RAG + LLM, đánh giá kết quả đầu ra của nó từ góc độ con người. Họ cung cấp phản hồi về các khía cạnh như mức độ liên quan, độ chính xác và tính tự nhiên của phản hồi của AI.
  • Phản hồi cho Master LLM: Đây là nơi điều kỳ diệu xảy ra. Phản hồi từ những người thử nghiệm là con người được truyền trực tiếp tới Master LLM. Không giống như các mô hình tiêu chuẩn, Master LLM được thiết kế để hiểu và diễn giải phản hồi này nhằm tinh chỉnh các đầu ra tiếp theo của nó.
  • Điều chỉnh nhanh chóng bởi LLM chính: Được trang bị phản hồi này, LLM chính sẽ điều chỉnh lời nhắc cho LLM phát triển của chúng tôi. Quá trình này tương tự như việc một người cố vấn hướng dẫn một học sinh. Master LLM sửa đổi cẩn thận cách LLM phát triển diễn giải và phản ứng với các lời nhắc, đảm bảo cơ chế phản hồi nhận biết theo ngữ cảnh và hiệu quả hơn.

Vai trò kép của Master LLM

Master LLM có chức năng vừa là chuẩn mực cho LLM được phát triển nội bộ, vừa là người tham gia tích cực vào vòng phản hồi. Nó đánh giá phản hồi, điều chỉnh các lời nhắc hoặc tham số mô hình và về cơ bản là 'học hỏi' từ các tương tác của con người.

Lợi ích của việc thích ứng theo thời gian thực

Quá trình này mang tính biến đổi. Nó cho phép AI thích ứng theo thời gian thực, khiến nó trở nên linh hoạt hơn và phù hợp hơn với sự phức tạp của ngôn ngữ và quá trình suy nghĩ của con người. Khả năng thích ứng theo thời gian thực như vậy đảm bảo rằng quá trình học tập của AI dốc và liên tục.

Chu kỳ cải tiến

Thông qua chu trình tương tác, phản hồi và thích ứng này, AI của chúng ta không chỉ trở thành một công cụ; nó trở thành một thực thể học tập, có khả năng cải thiện qua mỗi lần tương tác với người kiểm tra. Mô hình con người trong vòng lặp này đảm bảo rằng AI của chúng tôi không bị trì trệ mà phát triển để trở thành trợ lý trực quan và hiệu quả hơn.


Tóm lại, Phản hồi trong vòng lặp của con người không chỉ là thu thập thông tin chi tiết của con người—mà còn là việc tạo ra một AI năng động và có khả năng thích ứng để có thể tinh chỉnh hành vi của mình để phục vụ người dùng tốt hơn. Quá trình lặp đi lặp lại này đảm bảo rằng các ứng dụng RAG + LLM của chúng tôi luôn ở vị trí tiên tiến, không chỉ cung cấp các câu trả lời mà còn cung cấp các phản hồi mang sắc thái, nhận biết theo ngữ cảnh phản ánh sự hiểu biết thực sự về nhu cầu của người dùng.


Để xem bản demo đơn giản, bạn có thể xem cách ClearML sử dụng khái niệm này để nâng cao Trình nhắc nhở trong video này.

Giai đoạn vận hành

Chuyển sang Giai đoạn Vận hành cũng giống như chuyển từ buổi diễn tập sang đêm khai mạc. Ở đây, các ứng dụng RAG + LLM của chúng tôi không còn là thực thể giả định nữa; họ trở thành những người tham gia tích cực vào quy trình làm việc hàng ngày của người dùng thực. Giai đoạn này là phép thử cho tất cả quá trình chuẩn bị và tinh chỉnh được thực hiện trong giai đoạn phát triển.


Trong giai đoạn này, các nhóm của chúng tôi – vận hành, sản phẩm và nhà phân tích – sắp xếp để triển khai và quản lý các ứng dụng, đảm bảo rằng mọi thứ chúng tôi đã xây dựng không chỉ hoạt động mà còn phát triển mạnh trong môi trường sống. Tại đây, chúng ta có thể xem xét triển khai các chiến lược thử nghiệm A/B để đo lường tính hiệu quả của các ứng dụng của mình một cách có kiểm soát.


  • Khung thử nghiệm A/B: Chúng tôi chia cơ sở người dùng của mình thành hai phân đoạn – phân khúc điều khiển, tiếp tục sử dụng phiên bản đã thiết lập của ứng dụng (Phiên bản 1) và phân khúc thử nghiệm, thử nghiệm các tính năng mới trong Phiên bản 2 (thực tế là bạn cũng có thể chạy nhiều thử nghiệm A/B cùng một lúc). Điều này cho phép chúng tôi thu thập dữ liệu so sánh về trải nghiệm người dùng, khả năng tiếp thu tính năng và hiệu suất tổng thể.

  • Triển khai hoạt động: Nhóm vận hành được giao nhiệm vụ triển khai suôn sẻ cả hai phiên bản, đảm bảo rằng cơ sở hạ tầng mạnh mẽ và mọi chuyển đổi phiên bản đều liền mạch cho người dùng.

  • Tiến hóa sản phẩm: Nhóm sản phẩm, dựa vào phản hồi của người dùng, làm việc để lặp lại sản phẩm. Nhóm này đảm bảo rằng các tính năng mới phù hợp với nhu cầu của người dùng và tầm nhìn tổng thể của sản phẩm.

  • Thông tin phân tích chuyên sâu: Nhóm phân tích kiểm tra nghiêm ngặt dữ liệu được thu thập từ thử nghiệm A/B. Những hiểu biết sâu sắc của họ rất quan trọng trong việc xác định xem phiên bản mới có hoạt động tốt hơn phiên bản cũ hay không và liệu nó đã sẵn sàng để phát hành rộng rãi hơn hay chưa.

  • Số liệu hiệu suất: Các chỉ số hiệu suất chính (KPI) được theo dõi để đo lường sự thành công của từng phiên bản. Chúng bao gồm số liệu tương tác của người dùng, điểm hài lòng và độ chính xác của kết quả đầu ra của ứng dụng.


Giai đoạn vận hành rất năng động, được thông báo bằng các vòng phản hồi liên tục không chỉ cải thiện ứng dụng mà còn nâng cao mức độ tương tác và sự hài lòng của người dùng. Đó là một giai đoạn được đặc trưng bởi việc giám sát, phân tích, lặp lại và trên hết là học hỏi từ dữ liệu trực tiếp.


Khi điều hướng giai đoạn này, mục tiêu của chúng tôi không chỉ là duy trì các tiêu chuẩn cao do giai đoạn phát triển đặt ra mà còn vượt qua chúng, đảm bảo rằng ứng dụng RAG + LLM của chúng tôi luôn đi đầu về đổi mới và khả năng sử dụng.

Phần kết luận

Tóm lại, việc tích hợp Thế hệ tăng cường truy xuất (RAG) và Mô hình ngôn ngữ lớn (LLM) đánh dấu một tiến bộ đáng kể trong AI, kết hợp việc truy xuất dữ liệu sâu với việc tạo văn bản phức tạp. Tuy nhiên, chúng ta cần một phương pháp đánh giá phù hợp, hiệu quả và một chiến lược phát triển lặp đi lặp lại. Giai đoạn phát triển nhấn mạnh vào việc tùy chỉnh đánh giá AI và nâng cao nó bằng phản hồi của con người trong vòng lặp, đảm bảo rằng các hệ thống này có khả năng đồng cảm và thích ứng với các tình huống trong thế giới thực. Cách tiếp cận này nêu bật sự phát triển của AI từ một công cụ đơn thuần trở thành đối tác hợp tác. Giai đoạn vận hành thử nghiệm các ứng dụng này trong các tình huống thực tế, sử dụng các chiến lược như thử nghiệm A/B và vòng phản hồi liên tục để đảm bảo tính hiệu quả và sự phát triển liên tục dựa trên sự tương tác của người dùng.