Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Important
Databricks, GenAI uygulamalarını değerlendirmek ve izlemek için MLflow 3 kullanılmasını önerir. Bu sayfada MLflow 2 Aracı Değerlendirmesi açıklanmaktadır.
- MLflow 3'te değerlendirme ve izlemeye giriş için bkz. Yapay zeka aracılarını değerlendirme ve izleme.
- MLflow 3'e geçiş hakkında bilgi için bkz. Aracı Değerlendirmesi'nden MLflow 3'e geçiş.
- Bu konudaki MLflow 3 bilgileri için bkz. MLflow değerlendirme veri kümeleri oluşturma.
Bir yapay zeka aracısının kalitesini ölçmek için, yüksek kaliteli yanıtları niteleyen ölçütlerle birlikte temsili bir istek kümesi tanımlayabilmeniz gerekir. Bunu bir değerlendirme kümesi sağlayarak yaparsınız. Bu makale, değerlendirme kümeniz için çeşitli seçenekleri ve değerlendirme kümesi oluşturmaya yönelik bazı en iyi yöntemleri kapsar.
Databricks, temsili sorular ve temel gerçek yanıtlarından oluşan insan etiketli bir değerlendirme kümesi oluşturmanızı önerir. Uygulamanız bir alma adımı içeriyorsa, isteğe bağlı olarak yanıtın temel alınmasını beklediğiniz destekleyici belgeleri sağlayabilirsiniz. Değerlendirme kümesi oluşturmaya başlamanıza yardımcı olmak için Databricks, doğrudan Aracı Değerlendirmesi'nde kullanılabilecek veya konu uzmanlarına gözden geçirilmek üzere gönderilebilen yüksek kaliteli sentetik sorular ve yer gerçeği yanıtları oluşturmaya yönelik bir SDK sağlar. Bakınız Sentez değerlendirme kümeleri.
İyi bir değerlendirme kümesi aşağıdaki özelliklere sahiptir:
- Temsilci: Uygulamanın üretimde karşılaşacağı istek aralığını doğru yansıtmalıdır.
- Zorlu: Uygulamanın tüm özelliklerini etkili bir şekilde test etmek zor ve çeşitli durumları içermelidir.
- Sürekli güncelleştiriliyor: Uygulamanın nasıl kullanıldığını ve değişen üretim trafiğini yansıtacak şekilde düzenli olarak güncelleştirilmelidir.
Değerlendirme kümesinin gerekli şeması için bkz. Aracı Değerlendirme giriş şeması (MLflow 2).
Örnek değerlendirme kümeleri
Bu bölüm, değerlendirme kümelerinin basit örneklerini içerir.
Yalnızca request ile örnek değerlendirme kümesi
eval_set = [
{
"request": "What is the difference between reduceByKey and groupByKey in Spark?",
}
]
request ve expected_response ile örnek değerlendirme kümesi
eval_set = [
{
"request_id": "request-id",
"request": "What is the difference between reduceByKey and groupByKey in Spark?",
"expected_response": "There's no significant difference.",
}
]
request, expected_responseve expected_retrieved_content ile örnek değerlendirme kümesi
eval_set = [
{
"request_id": "request-id",
"request": "What is the difference between reduceByKey and groupByKey in Spark?",
"expected_retrieved_context": [
{
"doc_uri": "doc_uri_1",
},
{
"doc_uri": "doc_uri_2",
},
],
"expected_response": "There's no significant difference.",
}
]
Yalnızca request ve response ile örnek değerlendirme kümesi
eval_set = [
{
"request": "What is the difference between reduceByKey and groupByKey in Spark?",
"response": "reduceByKey aggregates data before shuffling, whereas groupByKey shuffles all data, making reduceByKey more efficient.",
}
]
Rastgele biçimlendirilmiş bir request ve response ile örnek değerlendirme kümesi
eval_set = [
{
"request": {"query": "Difference between", "item_a": "reduceByKey", "item_b": "groupByKey"},
"response": {
"differences": [
"reduceByKey aggregates data before shuffling",
"groupByKey shuffles all data",
"reduceByKey is more efficient",
]
}
}
]
request, responseve guidelines ile örnek değerlendirme kümesi
eval_set = [
{
"request": "What is the difference between reduceByKey and groupByKey in Spark?",
"response": "reduceByKey aggregates data before shuffling, whereas groupByKey shuffles all data, making reduceByKey more efficient.",
# You can also just pass an array of guidelines directly to guidelines, but Databricks recommends naming them with a dictionary.
"guidelines": {
"english": ["The response must be in English"],
"clarity": ["The response must be clear, coherent, and concise"],
}
}
]
numaralı örnek değerlendirme kümesi request, response, guidelinesve expected_facts ile
eval_set = [
{
"request": "What is the difference between reduceByKey and groupByKey in Spark?",
"response": "reduceByKey aggregates data before shuffling, whereas groupByKey shuffles all data, making reduceByKey more efficient.",
"expected_facts": [
"There's no significant difference.",
],
# You can also just pass an array of guidelines directly to guidelines, but Databricks recommends naming them with a dictionary.
"guidelines": {
"english": ["The response must be in English"],
"clarity": ["The response must be clear, coherent, and concise"],
}
}
]
request, responseve retrieved_context ile örnek değerlendirme kümesi
eval_set = [
{
"request_id": "request-id", # optional, but useful for tracking
"request": "What is the difference between reduceByKey and groupByKey in Spark?",
"response": "reduceByKey aggregates data before shuffling, whereas groupByKey shuffles all data, making reduceByKey more efficient.",
"retrieved_context": [
{
# In `retrieved_context`, `content` is optional, but delivers additional functionality if provided (the Databricks Context Relevance LLM judge runs to check the relevance of the provided content to the request).
"content": "reduceByKey reduces the amount of data shuffled by merging values before shuffling.",
"doc_uri": "doc_uri_2_1",
},
{
"content": "groupByKey may lead to inefficient data shuffling due to sending all values across the network.",
"doc_uri": "doc_uri_6_extra",
},
],
}
]
request, response, retrieved_contextve expected_facts ile örnek değerlendirme kümesi
eval_set = [
{
"request_id": "request-id",
"request": "What is the difference between reduceByKey and groupByKey in Spark?",
"expected_facts": [
"There's no significant difference.",
],
"response": "reduceByKey aggregates data before shuffling, whereas groupByKey shuffles all data, making reduceByKey more efficient.",
"retrieved_context": [
{
# In `retrieved_context`, `content` is optional, but delivers additional functionality if provided (the Databricks Context Relevance LLM judge runs to check the relevance of the provided content to the request).
"content": "reduceByKey reduces the amount of data shuffled by merging values before shuffling.",
"doc_uri": "doc_uri_2_1",
},
{
"content": "groupByKey may lead to inefficient data shuffling due to sending all values across the network.",
"doc_uri": "doc_uri_6_extra",
},
],
}
]
request, response, retrieved_context, expected_factsve expected_retrieved_context ile örnek değerlendirme kümesi
eval_set = [
{
"request_id": "request-id",
"request": "What is the difference between reduceByKey and groupByKey in Spark?",
"expected_retrieved_context": [
{
"doc_uri": "doc_uri_2_1",
},
{
"doc_uri": "doc_uri_2_2",
},
],
"expected_facts": [
"There's no significant difference.",
],
"response": "reduceByKey aggregates data before shuffling, whereas groupByKey shuffles all data, making reduceByKey more efficient.",
"retrieved_context": [
{
# In `retrieved_context`, `content` is optional, but delivers additional functionality if provided (the Databricks Context Relevance LLM judge runs to check the relevance of the provided content to the request).
"content": "reduceByKey reduces the amount of data shuffled by merging values before shuffling.",
"doc_uri": "doc_uri_2_1",
},
{
"content": "groupByKey may lead to inefficient data shuffling due to sending all values across the network.",
"doc_uri": "doc_uri_6_extra",
},
],
}
]
Değerlendirme kümesi geliştirmeye yönelik en iyi yöntemler
- Değerlendirme kümesindeki her örneği veya örnek grubunu birim testi olarak düşünün. Yani her örnek, açık bir beklenen sonuca sahip belirli bir senaryoya karşılık gelir. Örneğin, daha uzun bağlamları, çok atlamalı mantığı ve dolaylı kanıtlardan yanıt çıkarabilmeyi test etmeyi göz önünde bulundurun.
- Kötü amaçlı kullanıcıların saldırgan senaryolarını test etmeyi göz önünde bulundurun.
- Değerlendirme kümesine eklenecek soru sayısına ilişkin belirli bir yönerge yoktur, ancak yüksek kaliteli verilerden gelen net sinyaller genellikle zayıf verilerden gelen gürültülü sinyallerden daha iyi performans gösterir.
- İnsanların yanıtlaması bile çok zor örnekler eklemeyi düşünün.
- İster genel amaçlı bir uygulama oluştururken ister belirli bir etki alanını hedeflerken, uygulamanız büyük olasılıkla çok çeşitli sorularla karşılaşır. Değerlendirme kümesi bunu yansıtmalıdır. Örneğin, belirli İK sorularını yanıtlayan bir uygulama oluşturuyorsanız, uygulamanın yanlış bilgiler üretmediğinden veya zararlı yanıtlar sağlamadığından emin olmak için diğer alanları (örneğin, operasyonlar) test etmeyi göz önünde bulundurmanız gerekir.
- Yüksek kaliteli, tutarlı insan tarafından oluşturulan etiketler, uygulamaya sağladığınız temel doğruluk değerlerinin istenen davranışı doğru şekilde yansıtmasını sağlamanın en iyi yoludur. Yüksek kaliteli insan etiketleri sağlamaya yönelik bazı adımlar şunlardır:
- Aynı soru için birden çok insan etiketleyicisinden gelen yanıtları (etiketleri) toplama.
- Etiketleme yönergelerinin net olduğundan ve insan etiketleyicilerinin tutarlı olduğundan emin olun.
- İnsan etiketleme işleminin koşullarının RAG uygulamasına gönderilen isteklerin biçimiyle aynı olduğundan emin olun.
- İnsan etiketleyiciler, örneğin sorunun farklı yorumlarından dolayı doğası gereği gürültülü ve tutarsızdır. Bu sürecin önemli bir parçasıdır. İnsan etiketlemesi kullanmak, daha önce dikkate almadığınız ve uygulamanızda gözlemlediğiniz davranışlarla ilgili içgörüler sağlayabilecek soruların yorumlarını ortaya koyabilir.