馃敀[private user] now I am trying to make the embedding visualizer work. The embeddings do arrive in Arize, however, it does not trigger the visualizer. Below is my code snippet. How do the embeddings need to be added for it to work?
// AddEmbeddingToArizeSpan adds embedding information to the current span
func AddEmbeddingToArizeSpan(ctx context.Context, embeddingResult *EmbeddingResult) {
if embeddingResult == nil {
slog.WarnContext(ctx, "Attempted to add nil embedding result to Arize span")
return
}
slog.InfoContext(ctx, "Adding embedding to Arize span",
"embedding_hash", embeddingResult.Hash,
"dimensions", len(embeddingResult.Embedding))
// Convert embedding result to metadata for Arize
embeddingMetadata := map[string]interface{}{
"query_summary": embeddingResult.Summary.UserQuery,
"embedding_hash": embeddingResult.Hash,
"embedding_dimension": len(embeddingResult.Embedding),
}
// Add to span metadata
AddMetadata(ctx, embeddingMetadata)
// Add embedding as a separate attribute if available
if len(embeddingResult.Embedding) > 0 {
// Convert to JSON for storage
if embeddingJSON, err := json.Marshal(embeddingResult.Embedding); err == nil {
observability.AddArizeAttributes(ctx, map[string]interface{}{
"query_embedding": string(embeddingJSON),
})
slog.DebugContext(ctx, "Successfully added embedding JSON to Arize attributes",
"json_size", len(embeddingJSON))
} else {
slog.ErrorContext(ctx, "Failed to marshal embedding to JSON for Arize", "error", err)
}
} else {
slog.WarnContext(ctx, "Embedding result has no embedding data")
}
slog.InfoContext(ctx, "Successfully added embedding metadata to Arize span")
}