code: def test_create_index(self):
      cursor = self.conn.cursor()
  
      # load some images
      rel = cursor.load(
          self.images,
          table_name="meme_images",
          format="image",
      )
      rel.execute()
  
      # todo support register function
      cursor.query(
          f"""CREATE FUNCTION IF NOT EXISTS SiftFeatureExtractor
                  IMPL  '{EvaDB_ROOT_DIR}/evadb/functions/sift_feature_extractor.py'"""
      ).df()
  
      # create a vector index using QDRANT
      cursor.create_vector_index(
          "faiss_index",
          table_name="meme_images",
          expr="SiftFeatureExtractor(data)",
          using="QDRANT",
      ).df()
  
      # do similarity search
      base_image = f"{EvaDB_ROOT_DIR}/data/detoxify/meme1.jpg"
      rel = (
          cursor.table("meme_images")
          .order(
              f"Similarity(SiftFeatureExtractor(Open('{base_image}')), SiftFeatureExtractor(data))"
          )
          .limit(1)
          .select("name")
      )
      similarity_sql = """SELECT name FROM meme_images
                              ORDER BY
                                  Similarity(SiftFeatureExtractor(Open("{}")), SiftFeatureExtractor(data))
                              LIMIT 1;""".format(
          base_image
      )
      assert_frame_equal(rel.df(), cursor.query(similarity_sql).df())
  
imports: import unittest
  from test.markers import qdrant_skip_marker
  from test.util import DummyObjectDetector, create_sample_video, load_functions_for_testing, shutdown_ray, suffix_pytest_xdist_worker_id_to_dir
  import numpy
  import pandas
  from pandas.testing import assert_frame_equal
  from evadb.binder.binder_utils import BinderError
  from evadb.configuration.constants import DEFAULT_DOCUMENT_CHUNK_OVERLAP, DEFAULT_DOCUMENT_CHUNK_SIZE, EvaDB_DATABASE_DIR, EvaDB_ROOT_DIR
  from evadb.executor.executor_utils import ExecutorError
  from evadb.interfaces.relational.db import connect
  from evadb.models.storage.batch import Batch
  from evadb.server.command_handler import execute_query_fetch_all
label_desc: Use image node_id 8 for calling the RelationalAPI obj's underlying member method code with example usage: obj.test_create_index() without return types