Repository navigation
Expand file tree
/
Copy pathRagQuality.java
More file actions
79 lines (65 loc) · 2.11 KB
/
Copy pathRagQuality.java
File metadata and controls
79 lines (65 loc) · 2.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import io.btrace.core.annotations.BTrace;
import io.btrace.core.annotations.Duration;
import io.btrace.core.annotations.Injected;
import io.btrace.core.annotations.Kind;
import io.btrace.core.annotations.Location;
import io.btrace.core.annotations.OnEvent;
import io.btrace.core.annotations.OnMethod;
import io.btrace.core.annotations.OnTimer;
import io.btrace.rag.RagQualityService;
import static io.btrace.core.BTraceUtils.*;
/**
* Traces RAG pipeline performance: vector DB query latency, similarity
* scores, and empty retrieval rates. Targets Pinecone Java client.
*
* <p>Attach to a JVM running a RAG pipeline:
* <pre>
* btrace <pid> RagQuality.java
* </pre>
*/
@BTrace
public class RagQuality {
@Injected
private static RagQualityService rag;
// ==================== Pinecone ====================
@OnMethod(
clazz = "/io\\.pinecone\\..*/",
method = "query",
location = @Location(Kind.RETURN))
public static void onPineconeQuery(@Duration long dur) {
rag.recordQuery("pinecone", dur);
}
// ==================== Milvus ====================
@OnMethod(
clazz = "/io\\.milvus\\.client\\..*/",
method = "search",
location = @Location(Kind.RETURN))
public static void onMilvusSearch(@Duration long dur) {
rag.recordQuery("milvus", dur);
}
// ==================== Weaviate ====================
@OnMethod(
clazz = "/io\\.weaviate\\.client\\..*/",
method = "/get|search/",
location = @Location(Kind.RETURN))
public static void onWeaviateQuery(@Duration long dur) {
rag.recordQuery("weaviate", dur);
}
// ==================== Chroma ====================
@OnMethod(
clazz = "/tech\\.amikos\\.chromadb\\..*/",
method = "query",
location = @Location(Kind.RETURN))
public static void onChromaQuery(@Duration long dur) {
rag.recordQuery("chroma", dur);
}
// ==================== Periodic summary ====================
@OnTimer(30000)
public static void periodicSummary() {
println(rag.getSummary());
}
@OnEvent("summary")
public static void onDemandSummary() {
println(rag.getSummary());
}
}