OpenFlow Protocol

Vector Operation Nodes

Vector Insert

{
  id: "alphanumeric_underscore, 1-50 chars (required, unique node identifier)",
  type: "'VECTOR_INSERT' (required, literal node type)",
  name: "string, 1-100 chars (required, display name)",
  config: {
    provider: "'pinecone' | 'weaviate' | 'qdrant' | 'chroma' | 'milvus' (required, vector database provider)",
    index_name: "alphanumeric_underscore, 1-100 chars, e.g., 'knowledge-base' (required, database index)",
    namespace: "alphanumeric_underscore, 1-100 chars, e.g., 'documents' (optional, data partition)"
  },
  input: {
    embedding: "single_embedding_object (optional, single vector to insert)",
    embeddings: "embedding_array, max 1000 items (optional, batch vector insertion)",
    source: { // variable_reference, e.g., '{{embedding_node.output.embeddings}}' (optional, from previous node)
      id: "vector_identifier, alphanumeric_underscore, 1-100 chars (required, unique vector ID)",
      values: "float_array, 768-3072 dimensions (required, embedding vector)",
      metadata: "key_value_object, max 40KB, e.g., {title: 'Doc1', category: 'research'} (optional, vector metadata)"
    }
  }
}
 
{
  id: "alphanumeric_underscore, 1-50 chars (required, unique node identifier)",
  type: "'VECTOR_SEARCH' (required, literal node type)",
  name: "string, 1-100 chars (required, display name)",
  config: {
    provider: "'pinecone' | 'weaviate' | 'qdrant' | 'chroma' | 'milvus' (required, vector database provider)",
    index_name: "alphanumeric_underscore, 1-100 chars, e.g., 'knowledge-base' (required, database index)",
    namespace: "alphanumeric_underscore, 1-100 chars, e.g., 'documents' (optional, data partition)",
    top_k: "integer, 1-1000, default: 10 (optional, maximum results to return)",
    similarity_threshold: "float, 0.0-1.0, default: 0.0 (optional, minimum similarity score)"
  },
  input: {
    search_text: "query_string, max 8192 tokens, e.g., 'What is machine learning?' (optional, text to search for)",
    search_vector: "float_array or variable_reference, e.g., '{{embedding_node.output.embedding.values}}' (required if no search_text)",
    top_k: "integer, 1-1000 (optional, overrides config.top_k for this search)"
  }
}
 

Output:

{
  results: [ // search_result_array, ordered by similarity score descending
    {
      id: "vector_identifier, matches inserted vector ID (required, unique identifier)",
      score: "float, 0.0-1.0, similarity confidence (required, relevance score)",
      metadata: "key_value_object, preserved from insertion (optional, vector metadata)",
      values: "float_array, original embedding vector (optional, if requested)"
    }
  ],
  search_metadata: {
    total_matches: "integer, vectors above similarity threshold (total results found)",
    max_score: "float, 0.0-1.0, highest similarity in results (best match confidence)",
    min_score: "float, 0.0-1.0, lowest similarity in results (worst match confidence)",
    query_time_ms: "integer, milliseconds, search execution time (performance metric)"
  }
}
 

Vector Update

{
  id: "alphanumeric_underscore, 1-50 chars (required, unique node identifier)",
  type: "'VECTOR_UPDATE' (required, literal node type)",
  name: "string, 1-100 chars (required, display name)",
  config: {
    provider: "'pinecone' | 'weaviate' | 'qdrant' | 'chroma' | 'milvus' (required, vector database provider)",
    index_name: "alphanumeric_underscore, 1-100 chars, e.g., 'knowledge-base' (required, database index)",
    namespace: "alphanumeric_underscore, 1-100 chars, e.g., 'documents' (optional, data partition)"
  },
  input: {
    update: "single_update_object (optional, single vector to update)",
    updates: { // update_array, max 1000 items (optional, batch vector updates)
      id: "existing_vector_identifier, must exist in database (required, vector to update)",
      values: "float_array, 768-3072 dimensions (optional, new embedding vector)",
      metadata: "key_value_object, max 40KB (optional, new or merged metadata)"
    }
  }
}
 

Vector Delete

{
  id: "alphanumeric_underscore, 1-50 chars (required, unique node identifier)",
  type: "'VECTOR_DELETE' (required, literal node type)",
  name: "string, 1-100 chars (required, display name)",
  config: {
    provider: "'pinecone' | 'weaviate' | 'qdrant' | 'chroma' | 'milvus' (required, vector database provider)",
    index_name: "alphanumeric_underscore, 1-100 chars, e.g., 'knowledge-base' (required, database index)",
    namespace: "alphanumeric_underscore, 1-100 chars, e.g., 'documents' (optional, data partition)"
  },
  input: {
    ids: "vector_id_array, max 1000 items, e.g., ['doc_1', 'doc_2'] (required, vectors to delete)"
  }
}
 

On this page