paint-brush
RAG + LLM Başvurularınızı Etkin Bir Şekilde Nasıl Değerlendirebilirsiniz?ile@vndee
1,519 okumalar
1,519 okumalar

RAG + LLM Başvurularınızı Etkin Bir Şekilde Nasıl Değerlendirebilirsiniz?

ile Duy Huynh17m2023/12/27
Read on Terminal Reader

Çok uzun; Okumak

Günümüzün bazı uygulamalarının nasıl neredeyse sihirli bir şekilde akıllı göründüğünü hiç merak ettiniz mi? Bu sihrin büyük bir kısmı RAG ve LLM denilen bir şeyden geliyor.
featured image - RAG + LLM Başvurularınızı Etkin Bir Şekilde Nasıl Değerlendirebilirsiniz?
Duy Huynh HackerNoon profile picture
0-item
1-item

Selam! Günümüzün bazı uygulamalarının nasıl neredeyse sihirli bir şekilde akıllı göründüğünü hiç merak ettiniz mi? Bu sihrin büyük bir kısmı RAG ve LLM denen bir şeyden geliyor. RAG'ı (Geri Alma-Artırılmış Nesil) yapay zeka dünyasının zeki kitap kurdu olarak düşünün. Sorunuz için tam olarak neyin gerekli olduğunu bulmak için tonlarca bilgiyi araştırır. Ayrıca ünlü GPT serisi gibi LLM (Büyük Dil Modeli) de etkileyici metin oluşturma yeteneklerine dayalı olarak sorunsuz bir yanıt üretecektir. Bu ikisinin bir araya gelmesiyle yalnızca akıllı değil, aynı zamanda son derece alakalı ve bağlama duyarlı bir yapay zekaya sahip olursunuz. Süper hızlı bir araştırma asistanını esprili bir konuşmacıyla birleştirmeye benziyor. Bu kombinasyon, belirli bilgileri hızlı bir şekilde bulmanıza yardımcı olmaktan, şaşırtıcı derecede gerçekçi hissettiren bir sohbete kadar her şey için harikadır.


Ancak işin püf noktası şu: Yapay zekamızın sadece süslü jargon söylemekle kalmayıp gerçekten yardımcı olup olmadığını nasıl bileceğiz? Değerlendirmenin devreye girdiği yer burasıdır. Bu sadece sahip olunması güzel bir şey değil, çok önemlidir. Yapay zekamızın sadece doğru olduğundan değil aynı zamanda konuyla alakalı, kullanışlı olduğundan ve tuhaf teğetlere sapmadığından da emin olmalıyız. Sonuçta, neye ihtiyacınız olduğunu anlayamıyorsa veya size asılsız cevaplar veriyorsa akıllı asistanın ne faydası var?


RAG + LLM başvurumuzu değerlendirmek bir gerçeklik kontrolü gibidir. Bu bize, yalnızca teknik açıdan etkileyici değil, gerçekten yararlı bir yapay zeka yaratma konusunda gerçekten doğru yolda olup olmadığımızı söylüyor. Bu yazıda bunu nasıl yapacağımızı ele alacağız; yapay zekamızın teoride olduğu kadar pratikte de harika olmasını sağlayacağız!

Geliştirme aşaması

Geliştirme aşamasında, tipik bir makine öğrenimi modeli değerlendirme hattı doğrultusunda düşünmek önemlidir. Standart bir AI/ML kurulumunda genellikle geliştirme, eğitim ve test setleri gibi çeşitli veri kümeleriyle çalışırız ve modelin etkinliğini ölçmek için niceliksel ölçümler kullanırız. Ancak Büyük Dil Modellerini (LLM'ler) değerlendirmek benzersiz zorluklar sunar. Geleneksel niceliksel ölçümler LLM'lerden elde edilen çıktının kalitesini yakalamakta zorluk çekiyor çünkü bu modeller hem çeşitli hem de yaratıcı bir dil oluşturmada başarılı oluyor. Sonuç olarak, etkili değerlendirme için kapsamlı bir etiket setine sahip olmak zordur.


Akademik çevrelerde araştırmacılar, LLM'leri sıralamak için MMLU gibi kriterler ve puanlar kullanabilir ve LLM çıktılarının kalitesini değerlendirmek için insan uzmanları görevlendirilebilir. Ancak bu yöntemler, gelişme hızının yüksek olduğu ve pratik uygulamaların anında sonuç gerektirdiği üretim ortamına sorunsuz bir şekilde geçiş yapmamaktadır. Bu yalnızca LLM performansıyla ilgili değil; gerçek dünyadaki talepler, veri alımı, hızlı kompozisyon ve LLM'nin katkısını içeren tüm süreci dikkate alır. Her yeni sistem yinelemesi için veya belgelerde veya etki alanlarında değişiklik olduğunda, insanlar tarafından seçilmiş bir kıyaslama hazırlamak pratik değildir. Dahası, sektördeki hızlı gelişme, insan test uzmanlarının dağıtımdan önce her güncellemeyi değerlendirmesi için uzun süre bekleme lüksünü karşılamıyor. Bu nedenle, akademik dünyada işe yarayan değerlendirme stratejilerinin hızlı ve sonuç odaklı üretim ortamına uygun hale getirilmesi önemli bir zorluk teşkil etmektedir.


Yani bu duruma düşerseniz, yüksek lisans yapan bir Yüksek Lisans tarafından sağlanan sözde puan gibi bir şeyi düşünebilirsiniz. Bu puan, otomatik değerlendirme ölçümlerinin ve insan muhakemesi damıtılmış özünün bir kombinasyonunu yansıtabilir. Böyle bir hibrit yaklaşım, insan değerlendiricilerin incelikli anlayışı ile makine değerlendirmesinin ölçeklenebilir, sistematik analizi arasındaki boşluğu doldurmayı amaçlamaktadır.

RAG + Yüksek Lisans Zinciri


Örneğin, ekibiniz sizin özel alanınız ve verileriniz üzerine eğitim almış şirket içi bir Yüksek Lisans eğitimi geliştiriyorsa, süreç genellikle geliştiricilerin, hızlı mühendislerin ve veri bilimcilerinin ortak çalışmasını içerecektir. Her üye kritik bir rol oynar:

  • Geliştiriciler mimarlardır. RAG + LLM zincirinin kusursuz bir şekilde entegre olmasını ve farklı senaryolar arasında zahmetsizce gezinebilmesini sağlayarak uygulamanın çerçevesini oluştururlar.

  • Hızlı Mühendisler yaratıcılardır. Gerçek dünyadaki kullanıcı etkileşimlerini taklit eden senaryolar ve istemler tasarlarlar. "Ya şöyle olursa" üzerinde düşünürler ve sistemi geniş bir yelpazedeki konu ve sorularla ilgilenmeye zorlarlar.

  • Veri Bilimcileri stratejistlerdir. Yanıtları analiz ediyorlar, verileri derinlemesine inceliyorlar ve yapay zekanın performansının hedefi karşılayıp karşılamadığını değerlendirmek için istatistiksel uzmanlıklarını kullanıyorlar.


Buradaki geri bildirim döngüsü çok önemlidir. Yapay zekamız istemlere yanıt verirken ekip her çıktıyı inceliyor. Yapay zeka soruyu anladı mı? Yanıt doğru ve alakalı mıydı? Dil daha akıcı olabilir mi? Bu geri bildirim daha sonra iyileştirmeler için sisteme geri gönderilir.


Bunu bir adım daha ileri taşımak için, kendi geliştirdiğiniz LLM'nizi değerlendirmek için OpenAI'nin GPT-4'ü gibi bir ana LLM'yi referans olarak kullandığınızı hayal edin. Sağlamlığı ve çok yönlülüğüyle bilinen GPT serisinin performansını yakalamayı, hatta aşmayı hedefliyorsunuz. İşte nasıl devam edebileceğiniz:

  • İlgili Bir Veri Kümesi Oluşturma: Alanınızın nüanslarını yansıtan bir veri kümesi oluşturarak başlayın. Bu veri kümesi uzmanlar tarafından düzenlenebilir veya zamandan tasarruf etmek için GPT-4'ün yardımıyla sentezlenebilir, böylece altın standardınıza uyması sağlanır.

  • Başarı için Metriklerin Tanımlanması: Metriklerinizi tanımlamanıza yardımcı olmak için yüksek lisans LLM'nin güçlü yönlerinden yararlanın. Master LLM'nin daha karmaşık görevleri yerine getirebileceği göz önüne alındığında, hedeflerinize en uygun ölçümleri seçme özgürlüğüne sahipsiniz. Topluluk standardında, Langchain'den ve ragas gibi diğer bazı kütüphanelerden bazı çalışmaları görmek isteyebilirsiniz. Sadakat, bağlam hatırlama, bağlam kesinliği, yanıt benzerliği vb. gibi bazı ölçümleri vardır.

  • Değerlendirme Hattınızı Otomatikleştirme: Hızlı geliştirme döngülerine ayak uydurmak için otomatik bir boru hattı oluşturun. Bu, her güncelleme veya değişikliğin ardından uygulamanın performansını önceden tanımlanmış ölçümlerinize göre tutarlı bir şekilde değerlendirecektir. Süreci otomatikleştirerek, değerlendirmenizin yalnızca kapsamlı değil, aynı zamanda verimli bir şekilde tekrarlanarak hızlı optimizasyona ve iyileştirmeye olanak tanımasını da sağlarsınız.


Örneğin, aşağıdaki gösterimde, OpenAI'nin GPT-4'ünü kullanarak basit bir belge alma konuşma görevinde çeşitli açık kaynaklı LLM'leri otomatik olarak nasıl değerlendireceğinizi göstereceğim.


İlk olarak, aşağıda gösterildiği gibi bir belgeden türetilen sentezlenmiş bir veri kümesi oluşturmak için OpenAI GPT-4'ü kullanıyoruz:

 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)


Yukarıda bahsettiğimiz kodu çalıştırdıktan sonra sonuç olarak bir CSV dosyası elde ediyoruz. Bu dosya, girdiğimiz belgeye ilişkin soru ve cevap çiftlerini aşağıdaki gibi içerir:

"Lakehouse: Veri Ambarı ve Gelişmiş Analitiği Birleştiren Yeni Nesil Açık Platformlar" başlıklı makale için sentezlenmiş QA külliyatı.


Daha sonra, Langchain'i kullanarak basit DocumentRetrievalQA zincirleri oluşturuyoruz ve bunları Ollama aracılığıyla yerel olarak çalışan birçok açık kaynaklı LLM'de değiştiriyoruz. Bununla ilgili daha önceki eğitimimi burada bulabilirsiniz.

 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)


Özetle yukarıdaki kod basit bir belge alma zinciri oluşturur. Bu zinciri Mistral, Llama2, Zephyr, Orca-mini ve Phi gibi çeşitli modeller kullanarak yürütüyoruz. Sonuç olarak, her LLM modelinin tahmin sonuçlarını depolamak için mevcut DataFrame'imize beş ek sütun ekliyoruz.

QA tahmin sonuçları.


Şimdi tahmin sonuçlarını değerlendirmek için OpenAI'nin GPT-4'ünü kullanarak bir ana zincir tanımlayalım. Bu kurulumda, geleneksel AI/ML problemlerinde yaygın olduğu gibi, yaklaşık F1 puanına benzer bir doğruluk puanı hesaplayacağız. Bunu başarmak için Doğru Pozitifler (TP), Yanlış Pozitifler (FP) ve Yanlış Negatifler (FN) gibi aşağıda tanımlanan paralel kavramları uygulayacağız:


  • TP: Hem cevapta hem de temel gerçekte mevcut olan ifadeler.
  • FP: Cevapta mevcut olan ancak temel gerçekte bulunmayan ifadeler.
  • FN: Temel gerçekte bulunan ancak cevapta yer almayan ilgili ifadeler.


Bu tanımlarla aşağıdaki formülleri kullanarak kesinlik, geri çağırma ve F1 puanını hesaplayabiliriz:

Formülleri Kullanarak F1 Skoru


 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) 


Sonuç


Tamam, artık birkaç model için basit bir kıyaslamamız var. Bu, her modelin belge alma görevini nasıl yerine getirdiğinin bir ön göstergesi olarak düşünülebilir. Bu rakamlar anlık bir görüntü sunsa da hikayenin sadece başlangıcı. Belirli bir derlemden doğru ve ilgili bilgileri alma konusunda hangi modellerin daha iyi olduğunu anlamak için bir temel görevi görürler. Kaynak kodunu burada bulabilirsiniz.

Döngü İçi İnsan Geri Bildirimi

Yapay zekamızı Döngü İçi İnsan Geri Bildirimi yoluyla ayarlamak söz konusu olduğunda, insan test uzmanları ile Yüksek Lisans LLM arasındaki sinerji çok önemlidir. Bu ilişki yalnızca geri bildirim toplamakla ilgili değil, aynı zamanda insan girdilerine uyum sağlayan ve onlardan öğrenen duyarlı bir yapay zeka sistemi oluşturmakla da ilgilidir.

İnteraktif Süreç

  • Test Uzmanının Girdisi: Test uzmanları, RAG + LLM Zinciri ile etkileşime geçerek çıktılarını insan perspektifinden değerlendirir. Yapay zekanın yanıtlarının uygunluğu, doğruluğu ve doğallığı gibi hususlar hakkında geri bildirim sağlarlar.
  • Yüksek Lisans Yüksek Lisansına Geri Bildirim: Sihrin gerçekleştiği yer burasıdır. İnsan test uzmanlarından gelen geri bildirimler doğrudan Master LLM'ye iletilir. Standart modellerden farklı olarak Master LLM, sonraki çıktılarını iyileştirmek için bu geri bildirimi anlayacak ve yorumlayacak şekilde tasarlanmıştır.
  • Master LLM tarafından İstem Ayarlama: Bu geri bildirimle donanmış olan Master LLM, gelişimsel LLM'miz için istemi ayarlar. Bu süreç, bir mentorun öğrenciye talimat vermesine benzer. Master LLM, gelişimsel LLM'nin istemleri nasıl yorumladığını ve bunlara nasıl tepki verdiğini dikkatli bir şekilde değiştirerek daha etkili ve bağlamsal olarak bilinçli bir yanıt mekanizması sağlar.

Yüksek Lisans LLM'nin İkili Rolü

Master LLM, hem kurum içi geliştirilen LLM için bir referans noktası hem de geri bildirim döngüsünde aktif bir katılımcı olarak işlev görür. Geri bildirimi değerlendirir, istemleri veya model parametrelerini ayarlar ve esas olarak insan etkileşimlerinden 'öğrenir'.

Gerçek Zamanlı Uyarlamanın Avantajı

Bu süreç dönüştürücüdür. Yapay zekanın gerçek zamanlı olarak uyum sağlamasına olanak tanıyarak onu daha çevik hale getirir ve insan dilinin ve düşünce süreçlerinin karmaşıklığıyla uyumlu hale getirir. Bu tür gerçek zamanlı adaptasyon, yapay zekanın öğrenme eğrisinin dik ve sürekli olmasını sağlar.

İyileştirme Döngüsü

Bu etkileşim, geri bildirim ve adaptasyon döngüsü sayesinde yapay zekamız bir araçtan daha fazlası haline gelir; bir insan testçiyle her etkileşim yoluyla gelişme kapasitesine sahip, öğrenen bir varlık haline gelir. Bu döngüdeki insan modeli, yapay zekamızın sabit kalmamasını, daha verimli ve sezgisel bir asistana dönüşmesini sağlar.


Özetle, Döngü İçi İnsan Geri Bildirimi yalnızca insan içgörülerini toplamakla ilgili değildir; kullanıcılara daha iyi hizmet vermek için davranışında ince ayar yapabilen dinamik ve uyarlanabilir bir yapay zeka oluşturmakla ilgilidir. Bu yinelemeli süreç, RAG + LLM uygulamalarımızın en ileri düzeyde kalmasını ve yalnızca yanıtlar değil, aynı zamanda kullanıcının ihtiyaçlarının gerçek bir anlayışını yansıtan bağlamsal olarak bilinçli, incelikli yanıtlar sunmasını sağlar.


Basit bir demo için bu videoda ClearML'in Promptimizer'ı geliştirmek amacıyla bu konsepti nasıl kullandığını izleyebilirsiniz.

İşletme Aşaması

Operasyon Aşamasına geçiş, kostümlü provalardan açılış gecesine geçiş gibidir. Burada RAG + LLM başvurularımız artık varsayımsal varlıklar değil; gerçek kullanıcıların günlük iş akışlarının aktif katılımcıları haline gelirler. Bu aşama, geliştirme aşamasında yapılan tüm hazırlıklar ve ince ayarlar için turnusol testidir.


Bu aşamada, ekiplerimiz (operasyonlar, ürün ve analistler) uygulamaları dağıtmak ve yönetmek için bir araya gelerek, oluşturduğumuz her şeyin yalnızca çalışır durumda olmasını değil aynı zamanda canlı bir ortamda gelişmesini sağlar. Uygulamalarımızın etkinliğini kontrollü bir şekilde ölçmek için A/B testi stratejilerini uygulamayı düşünebileceğimiz yer burasıdır.


  • A/B Test Çerçevesi: Kullanıcı tabanımızı iki bölüme ayırdık: uygulamanın yerleşik sürümünü (Sürüm 1) kullanmaya devam eden kontrol bölümü ve Sürüm 2'deki (aslında) yeni özellikleri deneyen test bölümü. aynı anda birden fazla A/B testi de çalıştırabilirsiniz). Bu, kullanıcı deneyimi, özelliklerin algılanabilirliği ve genel performans hakkında karşılaştırmalı veriler toplamamıza olanak tanır.

  • Operasyonel Kullanıma Sunma: Operasyon ekibi, altyapının sağlam olmasını ve tüm sürüm geçişlerinin kullanıcı için sorunsuz olmasını sağlamak üzere her iki sürümün de sorunsuz şekilde kullanıma sunulmasıyla görevlendirildi.

  • Ürün Gelişimi: Ürün ekibi, kullanıcı geri bildirimlerinin nabzını tutarak, ürünü yinelemek için çalışır. Bu ekip, yeni özelliklerin kullanıcı ihtiyaçları ve genel ürün vizyonuyla uyumlu olmasını sağlar.

  • Analitik Bilgiler: Analist ekibi, A/B testinden toplanan verileri titizlikle inceler. Onların görüşleri, yeni sürümün eskisinden daha iyi performans gösterip göstermediğini ve daha geniş bir sürüme hazır olup olmadığını belirlemede kritik önem taşıyor.

  • Performans Metrikleri: Her sürümün başarısını ölçmek için temel performans göstergeleri (KPI'ler) izlenir. Bunlar arasında kullanıcı etkileşim ölçümleri, memnuniyet puanları ve uygulama çıktılarının doğruluğu yer alır.


Operasyon aşaması dinamiktir ve yalnızca uygulamaları geliştirmekle kalmayıp aynı zamanda kullanıcı etkileşimini ve memnuniyetini de artıran sürekli geri bildirim döngüleriyle bilgilendirilir. İzleme, analiz, yineleme ve hepsinden önemlisi canlı verilerden öğrenme ile karakterize edilen bir aşamadır.


Bu aşamada ilerlerken amacımız yalnızca geliştirme aşaması tarafından belirlenen yüksek standartları korumak değil, aynı zamanda bunları aşarak RAG + LLM uygulamamızın yenilik ve kullanılabilirlik açısından ön planda kalmasını sağlamaktır.

Çözüm

Özetle, Almayla Artırılmış Üretim (RAG) ve Büyük Dil Modellerinin (LLM'ler) entegrasyonu, derin veri alımını gelişmiş metin oluşturmayla harmanlayarak yapay zekada önemli bir ilerlemeye işaret ediyor. Ancak değerlendirme için doğru ve etkili bir yönteme ve yinelemeli bir geliştirme stratejisine ihtiyacımız var. Geliştirme aşaması, yapay zeka değerlendirmesinin özelleştirilmesine ve döngüdeki insan geri bildirimleriyle geliştirilmesine vurgu yaparak bu sistemlerin empatik ve gerçek dünya senaryolarına uyarlanabilir olmasını sağlar. Bu yaklaşım, yapay zekanın yalnızca bir araçtan işbirlikçi bir ortağa doğru evrimini vurguluyor. Operasyonel aşama, kullanıcı etkileşimine dayalı olarak etkinliği ve sürekli gelişimi sağlamak için A/B testi ve sürekli geri bildirim döngüleri gibi stratejiler kullanarak bu uygulamaları gerçek dünya senaryolarında test eder.