Add Support for gemini embeddings#244
Conversation
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request introduces support for the Gemini embedding model within the unstructured data pipeline. It expands the existing embedding configuration schema to include Gemini-specific parameters, updates the controller logic to dynamically select and apply configurations based on the chosen model, and ensures compatibility across the codebase including deepcopy methods and equality checks. Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request adds support for the gemini-embedding-2 model to the vector embeddings generator, including configuration structs, CRD updates, and controller refactoring to dynamically initialize the embedding client. A critical issue was identified in vectorembeddingsgenerator_controller.go where accessing unstructuredSecret without checking if it is nil could lead to a nil pointer dereference and crash the operator if the controller reconciles before the secret is loaded into memory.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| endpoint = string(unstructuredSecret.Data[config.Endpoint]) | ||
| apiKey = string(unstructuredSecret.Data[config.APIKey]) |
There was a problem hiding this comment.
There is a potential nil pointer dereference here. unstructuredSecret is a package-level global variable initialized in ControllerConfigReconciler. If the operator restarts, VectorEmbeddingsGeneratorReconciler might reconcile before ControllerConfigReconciler has populated unstructuredSecret in memory (even if the CR status is 'Healthy' in etcd). This will cause a panic and crash the operator.
Please add a defensive check to ensure unstructuredSecret and its Data field are not nil before accessing them.
if unstructuredSecret == nil || unstructuredSecret.Data == nil {
return false, fmt.Errorf("unstructured secret is not initialized in memory")
}
endpoint = string(unstructuredSecret.Data[config.Endpoint])
apiKey = string(unstructuredSecret.Data[config.APIKey])
No description provided.