Skip to main content

Weaviate

Overview

This page guides you through the process of setting up the Weaviate destination connector.

There are three parts to this:

  • Processing - split up individual records in chunks so they will fit the context window and decide which fields to use as context and which are supplementary metadata.
  • Embedding - convert the text into a vector representation, either by calling an embedding service, by reading a pre-calculated vector from the record, or by letting Weaviate's own vectorizer do it.
  • Indexing - store the vectors in a vector database for similarity search

The connector uses version 3 of the Weaviate Python client, so it works with Weaviate's class-based schema API. Newer Weaviate documentation calls these objects collections, but this connector and its configuration refer to them as classes.

Prerequisites

To use the Weaviate destination, you'll need:

  • Access to a running Weaviate instance (either self-hosted or Weaviate Cloud), minimum version 1.21.2
  • One of the following, depending on how you want vectors to be produced:
    • An account with API access for OpenAI, Azure OpenAI, Cohere, or another OpenAI-compatible embedding service
    • Pre-calculated embeddings stored in a field in your source records
    • A vectorizer module configured in Weaviate, so Weaviate embeds the text itself

You'll need the following information to configure the destination:

  • Public Endpoint - The URL of the Weaviate cluster to load data into, for example https://my-cluster.weaviate.network.
  • Authentication - How to authenticate against the cluster: an API token (Weaviate Cloud), a username and password (self-managed clusters), or no authentication (local test clusters only).
  • Embedding service API key - Only required if Airbyte calculates the embeddings for you.

On Airbyte Cloud, the endpoint must start with https:// and authentication must be enabled. The connection check fails if either condition isn't met, so No Authentication and plain HTTP endpoints only work in self-managed Airbyte deployments.

Supported sync modes

Sync modeSupported?
Full Refresh - OverwriteYes
Full Refresh - AppendYes
Full Refresh - Overwrite + DedupedNo
Incremental Sync - AppendYes
Incremental Sync - Append + DedupedYes

Data type mapping

All fields specified as metadata fields will be stored as properties in the object can be used for filtering. The following data types are allowed for metadata fields:

  • String
  • Number (integer or floating point, gets converted to a 64 bit floating point)
  • Booleans (true, false)
  • List of String

All other fields are serialized into their JSON representation. Metadata fields holding an empty list are dropped instead of written, because Weaviate rejects them when they aren't part of a predefined schema.

Configuration

Processing

Each record will be split into text fields and metadata fields as configured in the "Processing" section. All text fields are concatenated into a single string and then split into chunks of configured length. If specified, the metadata fields are stored as-is along with the embedded text chunks. You can split text by separator, by Markdown header, or at syntax boundaries for a specific programming language.

When specifying text fields, you can access nested fields in the record by using dot notation, e.g. user.name will access the name field in the user object. It's also possible to use wildcards to access all fields in an object, e.g. users.*.name will access all names fields in all entries of the users array.

The chunk length is measured in tokens produced by the tiktoken library. The maximum is 8191 tokens, which is the maximum length supported by the text-embedding-ada-002 model.

The stream name gets added as a metadata field _ab_stream to each document. If available, the primary key of the record is used to identify the document to avoid duplications when updated versions of records are indexed. It is added as the _ab_record_id metadata field.

Embedding

The connector can use one of the following embedding methods:

  1. OpenAI - using the OpenAI embeddings API, the connector will produce embeddings using the text-embedding-ada-002 model with 1536 dimensions. Throughput is limited by OpenAI's rate limits.

  2. Azure OpenAI - the same model and dimensions as OpenAI, but served from your own Azure OpenAI resource. You need the resource base URL, the deployment name, and an API key. Azure's API accepts at most 16 documents per request, so this option is slower than OpenAI for large syncs.

  3. Cohere - using the Cohere API, the connector will produce embeddings using the embed-english-light-v2.0 model with 1024 dimensions.

  4. OpenAI-compatible - for self-hosted or third-party services that implement the OpenAI embeddings API. You provide the base URL, the model name, and the number of dimensions the model returns. The dimensions you enter must match the model's actual output, because the connector doesn't verify it.

  5. From field - if you have pre-calculated embeddings stored in a field in your source records, you can use the From field integration to load them into Weaviate. The field must be a JSON array of numbers, e.g. [0.1, 0.2, 0.3], and its length must match the configured number of dimensions.

  6. No external embedding - Airbyte sends no vector at all. Use this when the target class has a vectorizer configured so Weaviate embeds the text itself, or when the class is only used for keyword search. Set Default Vectorizer and, if the vectorizer needs an API key, pass it with Additional headers.

For testing purposes, it's also possible to use the Fake embedding integration. It generates random 1536-dimension vectors and is suitable to test a data pipeline without incurring embedding costs.

Indexing

The indexing section has the following options:

OptionDefaultDescription
Batch Size128Number of objects sent to Weaviate per batch. Lower it if the cluster rejects large batches or runs out of memory.
Text FieldtextProperty that receives the embedded text chunk. It must match the text_key your query code and any vectorizer expect.
Tenant IDemptyEnables multi-tenancy for this connection. Leave empty to disable multi-tenancy.
Default VectorizernoneVectorizer set on classes the connector creates. Only relevant when Weaviate should embed the text itself.
Additional headersemptyExtra HTTP headers sent with every request, for example X-OpenAI-Api-Key for a text2vec-openai vectorizer.

All streams will be indexed into separate classes derived from the stream name. The connector strips everything except letters, digits, and underscores from the stream name and capitalizes the first character, so the users_v2 stream becomes the Users_v2 class and my orders! becomes Myorders.

If a class doesn't exist in the schema of the cluster, the connector creates it with the configured default vectorizer and a single _ab_record_id property. Weaviate infers the remaining properties from the first objects it receives, so auto-schema has to be enabled on the server.

You can also create the class in Weaviate in advance if you need more control over the schema. In this case, create the text properties _ab_stream and _ab_record_id for bookkeeping reasons. Deduplication and CDC deletes depend on _ab_record_id: if the existing class doesn't have that property, the connector skips the delete step and older versions of a record stay in the class alongside the new ones.

When a sync runs in Overwrite mode, the class is deleted and recreated with the same schema it had before, so any properties Weaviate inferred earlier are preserved.

Properties in Weaviate have to start with a lowercase letter and can't contain spaces or special characters, so field names might be updated during the loading process. The field names id, _id, and _additional are reserved keywords in Weaviate, so they are renamed to raw_id, raw__id, and raw__additional respectively.

When using multi-tenancy, the tenant id can be configured in the connector configuration. If not specified, multi-tenancy will be disabled. In case you want to index into an already created class, you need to make sure the class is created with multi-tenancy enabled. In case the class doesn't exist, it will be created with multi-tenancy properly configured. If the class already exists but the tenant id is not associated with the class, the connector will automatically add the tenant id to the class. This allows you to configure multiple connections for different tenants on the same schema.

Namespace support

This destination does not support namespaces.

Reference

Config fields reference

Field
Type
Property name
object
embedding
object
indexing
object
processing
boolean
omit_raw_text

Changelog

Expand to review
VersionDatePull RequestSubject
0.2.642026-08-1384358Update the CDK to remediate CVE-2025-68664 in the langchain dependency
0.2.632026-07-0281386Upgrade pillow from 11.x to 12.3.0 to resolve security vulnerabilities GHSA-cfh3-3jmp-rvhc, GHSA-pwv6-vv43-88gr, GHSA-whj4-6x5x-4v2j, GHSA-xg8h-j46f-w952
0.2.622026-07-0181364Bump authlib 1.6.3 to 1.6.12 to resolve security vulnerabilities
0.2.612026-03-3175645Bump version to force registry update for supportLevel change to community
0.2.602025-10-1661103Update dependencies
0.2.592025-05-1757180Update dependencies
0.2.582025-03-2956089Update dependencies
0.2.572025-03-0855424Update dependencies
0.2.562025-03-0154880Update dependencies
0.2.552025-02-2254278Update dependencies
0.2.542025-02-1553894Update dependencies
0.2.532025-02-0853424Update dependencies
0.2.522025-02-0152944Update dependencies
0.2.512025-01-2552211Update dependencies
0.2.502025-01-1851759Update dependencies
0.2.492025-01-1151259Update dependencies
0.2.482025-01-0450908Update dependencies
0.2.472024-12-2850444Update dependencies
0.2.462024-12-2150182Update dependencies
0.2.452024-12-1449317Update dependencies
0.2.442024-11-2548640Update dependencies
0.2.432024-11-0448244Update dependencies
0.2.422024-10-2947063Update dependencies
0.2.412024-10-1246848Update dependencies
0.2.402024-10-0546465Update dependencies
0.2.392024-09-2846189Update dependencies
0.2.382024-09-2145822Update dependencies
0.2.372024-09-1445560Update dependencies
0.2.362024-09-0745216Update dependencies
0.2.352024-08-3144964Update dependencies
0.2.342024-08-2444668Update dependencies
0.2.332024-08-2244530Update test dependencies
0.2.322024-08-1744216Update dependencies
0.2.312024-08-1243906Update dependencies
0.2.302024-08-1043599Update dependencies
0.2.292024-08-0343084Update dependencies
0.2.282024-07-2742629Update dependencies
0.2.272024-07-2042283Update dependencies
0.2.262024-07-1341935Update dependencies
0.2.252024-07-1041504Update dependencies
0.2.242024-07-0941222Update dependencies
0.2.232024-07-0640943Update dependencies
0.2.222024-06-2940633Update dependencies
0.2.212024-06-2540274Update dependencies
0.2.202024-06-2240109Update dependencies
0.2.192024-06-0639212[autopull] Upgrade base image to v1.2.2
0.2.182024-05-1538272Replace AirbyteLogger with logging.Logger
0.2.172024-04-15#37333Update CDK & pytest version to fix security vulnerabilities.
0.2.162024-03-22#35911Fix tests and move to Poetry
0.2.152023-01-25#34529Fix tests
0.2.142023-01-15#34229Allow configuring tenant id
0.2.132023-12-11#33303Fix bug with embedding special tokens
0.2.122023-12-07#33218Normalize metadata field names
0.2.112023-12-01#32697Allow omitting raw text
0.2.102023-11-16#32608Support deleting records for CDC sources
0.2.92023-11-13#32357Improve spec schema
0.2.82023-11-03#32134Improve test coverage
0.2.72023-11-03#32134Upgrade weaviate client library
0.2.62023-11-01#32038Retry failed object loads
0.2.52023-10-24#31953Fix memory leak
0.2.42023-10-23#31563Add field mapping option, improve append+dedupe sync performance and remove unnecessary retry logic
0.2.32023-10-19#31599Base image migration: remove Dockerfile and use the python-connector-base image
0.2.22023-10-15#31329Add OpenAI-compatible embedder option
0.2.12023-10-04#31075Fix OpenAI embedder batch size and conflict field name handling
0.2.02023-09-22#30151Add embedding capabilities, overwrite and dedup support and API key auth mode, make certified. 🚨 Breaking changes - check migrations guide.
0.1.12022-02-08#22527Multiple bug fixes: Support String based IDs, arrays of uknown type and additionalProperties of type object and array of objects
0.1.02022-12-06#20094Add Weaviate destination