Skip to content

Commit e087ba9

Browse files
author
Joseph Villarreal Lopez
committed
feat(chains): Add Google Generative AI Embeddings as an option
Adds support for Google's Generative AI Embeddings as an optional embedding model for Langchain. This model can be selected using the `EMBEDDING_MODEL` environment variable, and requires a valid Google API key to be set via the `GOOGLE_API_KEY` environment variable. The embedding model is configured with a model dimension of 768. Signed-off-by: Joseph Villarreal Lopez <[email protected]>
1 parent 7f5d030 commit e087ba9

File tree

5 files changed

+23
-4
lines changed

5 files changed

+23
-4
lines changed

chains.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
from typing import List, Any
2525
from utils import BaseLogger, extract_title_and_question
26+
from langchain_google_genai import GoogleGenerativeAIEmbeddings
2627

2728

2829
def load_embedding_model(embedding_model_name: str, logger=BaseLogger(), config={}):
@@ -40,6 +41,12 @@ def load_embedding_model(embedding_model_name: str, logger=BaseLogger(), config=
4041
embeddings = BedrockEmbeddings()
4142
dimension = 1536
4243
logger.info("Embedding: Using AWS")
44+
elif embedding_model_name == "google-genai-embedding-001":
45+
embeddings = GoogleGenerativeAIEmbeddings(
46+
model="models/embedding-001"
47+
)
48+
dimension = 768
49+
logger.info("Embedding: Using Google Generative AI Embeddings")
4350
else:
4451
embeddings = SentenceTransformerEmbeddings(
4552
model_name="all-MiniLM-L6-v2", cache_folder="/embedding_model"

docker-compose.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ services:
6060
- NEO4J_PASSWORD=${NEO4J_PASSWORD-password}
6161
- NEO4J_USERNAME=${NEO4J_USERNAME-neo4j}
6262
- OPENAI_API_KEY=${OPENAI_API_KEY-}
63+
- GOOGLE_API_KEY=${GOOGLE_API_KEY-}
6364
- OLLAMA_BASE_URL=${OLLAMA_BASE_URL-http://host.docker.internal:11434}
6465
- EMBEDDING_MODEL=${EMBEDDING_MODEL-sentence_transformer}
6566
- LANGCHAIN_ENDPOINT=${LANGCHAIN_ENDPOINT-"https://api.smith.langchain.com"}
@@ -100,7 +101,8 @@ services:
100101
- NEO4J_URI=${NEO4J_URI-neo4j://database:7687}
101102
- NEO4J_PASSWORD=${NEO4J_PASSWORD-password}
102103
- NEO4J_USERNAME=${NEO4J_USERNAME-neo4j}
103-
- OPENAI_API_KEY=${OPENAI_API_KEY-}
104+
- OPENAI_API_KEY=${OPENAI_API_KEY-}
105+
- GOOGLE_API_KEY=${GOOGLE_API_KEY-}
104106
- OLLAMA_BASE_URL=${OLLAMA_BASE_URL-http://host.docker.internal:11434}
105107
- LLM=${LLM-llama2}
106108
- EMBEDDING_MODEL=${EMBEDDING_MODEL-sentence_transformer}
@@ -139,6 +141,7 @@ services:
139141
- NEO4J_PASSWORD=${NEO4J_PASSWORD-password}
140142
- NEO4J_USERNAME=${NEO4J_USERNAME-neo4j}
141143
- OPENAI_API_KEY=${OPENAI_API_KEY-}
144+
- GOOGLE_API_KEY=${GOOGLE_API_KEY-}
142145
- OLLAMA_BASE_URL=${OLLAMA_BASE_URL-http://host.docker.internal:11434}
143146
- LLM=${LLM-llama2}
144147
- EMBEDDING_MODEL=${EMBEDDING_MODEL-sentence_transformer}
@@ -179,6 +182,7 @@ services:
179182
- NEO4J_PASSWORD=${NEO4J_PASSWORD-password}
180183
- NEO4J_USERNAME=${NEO4J_USERNAME-neo4j}
181184
- OPENAI_API_KEY=${OPENAI_API_KEY}
185+
- GOOGLE_API_KEY=${GOOGLE_API_KEY}
182186
- OLLAMA_BASE_URL=${OLLAMA_BASE_URL-http://host.docker.internal:11434}
183187
- LLM=${LLM-llama2}
184188
- EMBEDDING_MODEL=${EMBEDDING_MODEL-sentence_transformer}

env.example

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# LLM and Embedding Model
33
#*****************************************************************
44
LLM=llama2 #or any Ollama model tag, gpt-4, gpt-3.5, or claudev2
5-
EMBEDDING_MODEL=sentence_transformer #or openai, ollama, or aws
5+
EMBEDDING_MODEL=sentence_transformer #or google-genai-embedding-001 openai, ollama, or aws
66

77
#*****************************************************************
88
# Neo4j
@@ -40,4 +40,10 @@ EMBEDDING_MODEL=sentence_transformer #or openai, ollama, or aws
4040

4141
#AWS_ACCESS_KEY_ID=
4242
#AWS_SECRET_ACCESS_KEY=
43-
#AWS_DEFAULT_REGION=us-east-1
43+
#AWS_DEFAULT_REGION=us-east-1
44+
45+
#*****************************************************************
46+
# GOOGLE
47+
#*****************************************************************
48+
# Only required when using GoogleGenai LLM or embedding model
49+
GOOGLE_API_KEY=

readme.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,12 @@ Available variables:
1515
| NEO4J_USERNAME | neo4j | REQUIRED - Username for Neo4j database |
1616
| NEO4J_PASSWORD | password | REQUIRED - Password for Neo4j database |
1717
| LLM | llama2 | REQUIRED - Can be any Ollama model tag, or gpt-4 or gpt-3.5 or claudev2 |
18-
| EMBEDDING_MODEL | sentence_transformer | REQUIRED - Can be sentence_transformer, openai, aws or ollama |
18+
| EMBEDDING_MODEL | sentence_transformer | REQUIRED - Can be sentence_transformer, openai, aws, ollama or google-genai-embedding-001|
1919
| AWS_ACCESS_KEY_ID | | REQUIRED - Only if LLM=claudev2 or embedding_model=aws |
2020
| AWS_SECRET_ACCESS_KEY | | REQUIRED - Only if LLM=claudev2 or embedding_model=aws |
2121
| AWS_DEFAULT_REGION | | REQUIRED - Only if LLM=claudev2 or embedding_model=aws |
2222
| OPENAI_API_KEY | | REQUIRED - Only if LLM=gpt-4 or LLM=gpt-3.5 or embedding_model=openai |
23+
| GOOGLE_API_KEY | | REQUIRED - Only required when using GoogleGenai LLM or embedding model google-genai-embedding-001|
2324
| LANGCHAIN_ENDPOINT | "https://api.smith.langchain.com" | OPTIONAL - URL to Langchain Smith API |
2425
| LANGCHAIN_TRACING_V2 | false | OPTIONAL - Enable Langchain tracing v2 |
2526
| LANGCHAIN_PROJECT | | OPTIONAL - Langchain project name |

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,4 @@ boto3
1616
# missing from the langchain base image?
1717
langchain-openai
1818
langchain-community
19+
langchain-google-genai

0 commit comments

Comments
 (0)