Skip to main content

Oracle

The Oracle Embedding Store integrates with the AI Vector Search Feature of Oracle Database.

Maven Dependency

<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-oracle</artifactId>
<version>0.35.0</version>

</dependency>

APIs

  • OracleEmbeddingStore

Examples

Usage

Instances of this store can be created by configuring a builder. The builder requires that a DataSource and an embedding table be provided. The distance between two vectors is calculated using cosine similarity which measures the cosine of the angle between two vectors.

It is recommended to configure a DataSource which pools connections, such as the Universal Connection Pool or Hikari. A connection pool will avoid the latency of repeatedly creating new database connections.

If an embedding table already exists in your database provide the table name.

EmbeddingStore embeddingStore = OracleEmbeddingStore.builder()
.dataSource(myDataSource)
.embeddingTable("my_embedding_table")
.build();

If the table does not already exist, it can be created by passing a CreateOption to the builder.

EmbeddingStore embeddingStore = OracleEmbeddingStore.builder()
.dataSource(myDataSource)
.embeddingTable("my_embedding_table", CreateOption.CREATE_IF_NOT_EXISTS)
.build();

By default the embedding table will have the following columns:

NameTypeDescription
idVARCHAR(36)Primary key. Used to store UUID strings which are generated when the embedding store
embeddingVECTOR(*, FLOAT32)Stores the embedding
textCLOBStores the text segment
metadataJSONStores the metadata

If the columns of your existing table do not match the predefined column names or you would like to use different column names, you can use a EmbeddingTable builder to configure your embedding table.

OracleEmbeddingStore embeddingStore =
OracleEmbeddingStore.builder()
.dataSource(myDataSource)
.embeddingTable(EmbeddingTable.builder()
.createOption(CREATE_OR_REPLACE) // use NONE if the table already exists
.name("my_embedding_table")
.idColumn("id_column_name")
.embeddingColumn("embedding_column_name")
.textColumn("text_column_name")
.metadataColumn("metadata_column_name")
.build())
.build();

The builder provides two other methods that allow to create an index on the embedding column and configure the use of exact or approximate search.

For more information about Oracle AI Vector Search refer to the documentation.