Лучший подход к оценке конвейера Graph RAG с использованием метрик?Python

Программы на Python
Anonymous
Лучший подход к оценке конвейера Graph RAG с использованием метрик?

Сообщение Anonymous »

Я разработал конвейер Graph RAG (извлекательно-дополненная генерация), который выполняет рассуждения на основе графа знаний. По запросу пользователя конвейер извлекает соответствующие узлы и связи в виде троек графа, например:

Код: Выделить всё

node1 - [relationship] -> node2
Я хочу оценить качество выходных данных конвейера с помощью контролируемых показателей, таких как Precision@k, MRR и nDCG. В настоящее время я рассматриваю два подхода:
  • Оценка на основе узлов: в этом подходе для каждого запроса я определяю набор желаемых узлов (содержащих правильный ответ). Полученные узлы конвейера затем сравниваются с этими желаемыми узлами для вычисления таких показателей, как точность @k, MRR и nDCG.
  • Текстовая оценка с использованием LLM. Здесь я планирую преобразовать тройки графов в текстовые предложения с использованием языковой модели (например, all-MiniLM-L6-v2). Желаемые ответы также будут в текстовой форме. Затем я бы сравнил полученные тексты с нужными текстами, используя косинусное сходство их вложений. Например:

Код: Выделить всё

def compute_similarity(text1, text2):
embeddings = get_embeddings([text1, text2])
cosine_sim = np.dot(embeddings[0], embeddings[1]) / (np.linalg.norm(embeddings[0]) * np.linalg.norm(embeddings[1]))
return cosine_sim

def precision_at_k(retrieved_texts, relevant_texts, k):
retrieved_at_k = retrieved_texts[:k]
relevant_scores = [max(compute_similarity(text, relevant_text) for relevant_text in relevant_texts) for text in retrieved_at_k]
relevant_at_k = [1 if score >= 0.5 else 0 for score in relevant_scores]
return precision_score([1] * len(relevant_at_k), relevant_at_k)
Какой из этих подходов будет более подходящим для оценки конвейера RAG, учитывая, что ответы включают сложные отношения? Кроме того, если есть лучший метод или показатель для этого сценария, я был бы рад узнать об этом.

Вернуться в «Python»