docs/docs/integrations/embedding-models/open-ai-official.md
:::note
This is the documentation for the OpenAI Official SDK integration, that uses the official OpenAI Java SDK.
LangChain4j provides 3 different integrations with OpenAI for using embedding models, and this is #2 :
:::
This integration uses the OpenAI Java SDK GitHub Repository, and will work for all OpenAI models which can be provided by:
It will also work with models supporting the OpenAI API.
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai-official</artifactId>
<version>1.18.1-beta28</version>
</dependency>
To use OpenAI models, you usually need an endpoint URL, an API key, and a model name. This depends on where the model is hosted, and this integration tries to make it easier with some auto-configuration:
import com.openai.models.embeddings.EmbeddingModel;
import dev.langchain4j.model.embedding.EmbeddingModel;
import dev.langchain4j.model.openaiofficial.OpenAiOfficialEmbeddingModel;
import static com.openai.models.embeddings.EmbeddingModel.TEXT_EMBEDDING_3_SMALL;
// ....
EmbeddingModel model = OpenAiOfficialEmbeddingModel.builder()
.baseUrl(System.getenv("AZURE_OPENAI_ENDPOINT"))
.apiKey(System.getenv("AZURE_OPENAI_KEY"))
.modelName(TEXT_EMBEDDING_3_SMALL)
.build();
Similar to configuring the OpenAI Official Chat Model, you can configure the OpenAiOfficialEmbeddingModel with
Azure OpenAI and GitHub Models, using the isAzure() and isGitHubModels() methods.
EmbeddingModel model = OpenAiOfficialEmbeddingModel.builder()
.baseUrl(System.getenv("AZURE_OPENAI_ENDPOINT"))
.apiKey(System.getenv("AZURE_OPENAI_KEY"))
.modelName(TEXT_EMBEDDING_3_SMALL)
.isAzure(true) // Not necessary if the base URL ends with `openai.azure.com`
.build();
You can also use "passwordless" authentication, as described in the OpenAI Official Chat Model documentation.
EmbeddingModel model = OpenAiOfficialEmbeddingModel.builder()
.modelName(TEXT_EMBEDDING_3_SMALL)
.isGitHubModels(true)
.build();
Once the model is configured, you can use it to create embeddings:
Response<Embedding> response = model.embed("Please embed this sentence.");