35 lines
999 B
Python
35 lines
999 B
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
import psycopg2
|
|
|
|
from odoo import tools
|
|
from odoo.exceptions import UserError
|
|
from odoo.tools import SQL
|
|
|
|
from . import controllers
|
|
from . import models
|
|
from . import orm
|
|
from . import utils
|
|
from . import wizard
|
|
|
|
MISSING_PGVECTOR_LOG_MESSAGE = """\
|
|
PostgreSQL extension 'vector' is required to enable RAG for AI agents.
|
|
More information at https://github.com/pgvector/pgvector.
|
|
"""
|
|
|
|
|
|
def pgvector_is_available(env):
|
|
try:
|
|
with tools.mute_logger('odoo.sql_db'), env.cr.savepoint():
|
|
env.cr.execute(
|
|
SQL("SELECT 1 FROM pg_extension WHERE extname = 'vector'"))
|
|
pg_vector = env.cr.fetchone()
|
|
if not pg_vector:
|
|
env.cr.execute(
|
|
SQL("CREATE EXTENSION IF NOT EXISTS vector"))
|
|
except psycopg2.errors.FeatureNotSupported:
|
|
raise UserError(MISSING_PGVECTOR_LOG_MESSAGE)
|
|
|
|
|
|
def _pre_init_ai(env):
|
|
pgvector_is_available(env)
|