Thanks to visit codestin.com
Credit goes to github.com

Skip to content

feat(alloydb): PoC create basic sample for 'Vector Search' #13453

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

eapl-gemugami
Copy link
Contributor

Description

  • Validate Kokoro CI test environment
  • Preparation for Vector Search Demo Web App on Flask. Based on Perform a vector search.

Checklist

- Validate Kokoro CI test environment
@product-auto-label product-auto-label bot added api: alloydb Issues related to the AlloyDB API. samples Issues that are directly related to samples. labels Jun 23, 2025
@eapl-gemugami eapl-gemugami added the snippet-bot:force-run Force snippet-bot runs its logic label Jun 23, 2025
@snippet-bot snippet-bot bot removed the snippet-bot:force-run Force snippet-bot runs its logic label Jun 23, 2025
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary of Changes

Hello @eapl-gemugami, 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 establishes a foundational Proof of Concept for integrating AlloyDB's vector search capabilities within a Python application, specifically as a precursor to a Flask web application demo. It encompasses the necessary database schema definition, data population, and the core Python logic required to connect to AlloyDB, execute SQL commands, and perform vector similarity searches. The changes also include the addition of relevant dependencies and a robust test suite to ensure the functionality works as expected.

Highlights

  • Vector Search PoC: Introduced a foundational Proof of Concept (PoC) for performing vector searches using AlloyDB, laying the groundwork for a Flask web application demo.
  • Dependency Management: Added new Python dependencies in requirements.txt for Flask, AlloyDB connectivity, and requirements-test.txt for testing with pytest.
  • Database Schema & Data: Defined a sample database schema in example_data.sql including product and product_inventory tables, with the product table featuring a vector column and a scann index for efficient similarity search.
  • AlloyDB Integration Logic: Implemented core Python functions in vector_search.py for establishing secure connections to AlloyDB, executing arbitrary SQL queries, and specifically performing vector similarity searches.
  • Automated Testing: Included a comprehensive test suite in vector_search_test.py utilizing pytest to validate the end-to-end vector search functionality, including database setup and data insertion.
Using Gemini Code Assist

The 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 in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize 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 .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments to provide feedback.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a proof-of-concept for AlloyDB's Vector Search feature. I've identified a potential resource leak in the database handling logic and a bug in the test data. Additionally, I've provided suggestions to improve type hinting and file paths in tests. Addressing these points will enhance the quality and reliability of this new sample.

@eapl-gemugami eapl-gemugami added the snippet-bot:force-run Force snippet-bot runs its logic label Jun 23, 2025
@snippet-bot snippet-bot bot removed the snippet-bot:force-run Force snippet-bot runs its logic label Jun 23, 2025
@eapl-gemugami
Copy link
Contributor Author

This PR requires new permissions for the google_ml_integration as in Grant Vertex AI user permission to AlloyDB service agent

Kokoro CI - Python 3.9 Log:

pg8000.exceptions.DatabaseError:
{
  'S': 'ERROR',
  'V': 'ERROR',
  'C': 'GAV07',
  'M': 'Permission denied on the resource.',
  'D': 'Prediction request failed with \n HTTPError[403]: {\n  "error": {\n    "code": 403,\n    "message": "Permission \'aiplatform.endpoints.predict\' denied on resource \'//[aiplatform.googleapis.com/projects/1012616486416/locations/us-central1/publishers/google/models/text-embedding-005\](http://aiplatform.googleapis.com/projects/1012616486416/locations/us-central1/publishers/google/models/text-embedding-005%5C)' (or it may not exist).",\n    "status": "PERMISSION_DENIED",\n    "details": [\n      {\n        "@type": "[type.googleapis.com/google.rpc.ErrorInfo](http://type.googleapis.com/google.rpc.ErrorInfo)",\n        "reason": "IAM_PERMISSION_DENIED",\n        "domain": "[aiplatform.googleapis.com](http://aiplatform.googleapis.com/)",\n        "metadata": {\n          "resource": "projects/1012616486416/locations/us-central1/publishers/google/models/text-embedding-005",\n          "permission": "aiplatform.endpoints.predict"\n        }\n      }\n    ]\n  }\n}\n',
    'H': 'Verify and set required permissions to secret manager, Vertex AI endpoint and/ or third party models.',
  'W': 'SQL statement "SELECT ml_predict_row(FORMAT(\'publishers/google/models/%s\', model_id), json_build_object(\'instances\', json_build_array(json_build_object(\'content\', content))))"\nPL/pgSQL function google_ml._call_vertex_embedding(text,text) line 6 at SQL statement\nPL/pgSQL function embedding(text,text) line 13 at RETURN',
  'F': 'google_ml_integration.cc',
  'L': '397',
  'R': 'ml_predict_row_impl'
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api: alloydb Issues related to the AlloyDB API. samples Issues that are directly related to samples.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant