Module: Langchain::Datadog::Vectorsearch

Includes:
Tracing
Defined in:
lib/langchain/datadog/vectorsearch.rb

Overview

Implements hooks for Langchain::Vectorsearch module classes to capture LLM calls and report them to the Datadog LLM Observability API.

Constant Summary collapse

VECTOR_ATTRIBUTES =

List of various attributes that store vectors.

%w[embedding vector input_vector values].freeze

Instance Method Summary collapse

Methods included from Tracing

active_parent_id, active_span_id, active_trace_id, agent, end_span, start_span, workflow

Instance Method Details

#add_textsObject



13
14
15
16
17
# File 'lib/langchain/datadog/vectorsearch.rb', line 13

def add_texts(...)
  return super unless Datadog.enabled?

  span(kind: 'workflow') { super }
end

#ask(question:) ⇒ Object



49
50
51
52
53
54
55
# File 'lib/langchain/datadog/vectorsearch.rb', line 49

def ask(question:, **)
  return super unless Datadog.enabled?

  parameters = { question: }

  span(parameters, kind: 'workflow') { super }
end

#similarity_search(query:) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/langchain/datadog/vectorsearch.rb', line 25

def similarity_search(query:, **)
  return super unless Datadog.enabled?

  parameters = { query: }

  # Retrieval is not a valid root span kind, therefore when called
  # directly it's wrapped in a workflow span.
  if Tracing.active_parent_id == 'undefined'
    return span(parameters, kind: 'workflow') do
      span(parameters) { super }
    end
  end

  span(parameters) { super }
end

#similarity_search_with_hyde(query:) ⇒ Object



41
42
43
44
45
46
47
# File 'lib/langchain/datadog/vectorsearch.rb', line 41

def similarity_search_with_hyde(query:, **)
  return super unless Datadog.enabled?

  parameters = { query: }

  span(parameters, kind: 'workflow') { super }
end

#update_textsObject



19
20
21
22
23
# File 'lib/langchain/datadog/vectorsearch.rb', line 19

def update_texts(...)
  return super unless Datadog.enabled?

  span(kind: 'workflow') { super }
end