PricingDocsTutorialsBlogAbout

Javascript Tutorials

Quickstart

Python Tutorials

Quickstart
Movie Recommender System
Question Answering Engine
Question Answering Engine with HyDE
Reverse Image Search
Reverse Video Search
Semantic Search for Quora Questions
Weather Prediction

Ruby Tutorials

Quickstart

Java Tutorials

Quickstart

Python Fullstack Tutorials

WoofSearch - Reverse Image Search for Dog Images

Javascript Fullstack Tutorials

WikiSearch - Search For Wikipedia Embeddings

Java Tutorials

Quickstart

This is a basic Java example that sets up a PostgreSQL database with Lantern, and uses the java.sql library to interact with the database and perform vector searches.

Setup

Cloud
Source

Sign up for Lantern Cloud to create a database instance. In this demo, we assume that the instance you create has a user postgres, password postgres, and database ourdb.

Code

java
Copy
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Arrays;

public class LanternQuickstart {
    public static void main(String[] args) {
        try {
            // Connect to the database
            Connection conn = DriverManager.getConnection(
                    "jdbc:postgresql://localhost:5432/ourdb", "postgres", "postgres");

            // Creating a Table
            Statement stmt = conn.createStatement();
            String createTableQuery = "CREATE TABLE small_world (id integer, vector real[]);";
            stmt.execute(createTableQuery);

            // Inserting Data
            PreparedStatement pstmt = conn.prepareStatement("INSERT INTO small_world (id, vector) VALUES (?, ?);");
            pstmt.setInt(1, 0);
            pstmt.setArray(2, conn.createArrayOf("float", new Float[]{0f, 0f, 0f}));
            pstmt.executeUpdate();

            Float[][] vectors = {
                    {0f, 0f, 1f},
                    {0f, 1f, 1f},
                    {1f, 1f, 1f},
                    {2f, 0f, 1f}
            };

            for (int i = 1; i <= vectors.length; i++) {
                pstmt.setInt(1, i);
                pstmt.setArray(2, conn.createArrayOf("float", vectors[i - 1]));
                pstmt.executeUpdate();
            }

            // Creating an Index
            String createIndexQuery = "CREATE INDEX ON small_world USING lantern_hnsw (vector);";
            stmt.execute(createIndexQuery);

            // Vector Search
            stmt.execute("SET enable_seqscan = false;");
            ResultSet rs = stmt.executeQuery("SELECT id, l2sq_dist(vector, ARRAY[0,0,0]) AS dist, vector FROM small_world ORDER BY vector <-> ARRAY[0,0,0] LIMIT 3;");

            while (rs.next()) {
                int id = rs.getInt("id");
                double dist = rs.getDouble("dist");
                Float[] vector = (Float[]) rs.getArray("vector").getArray();
                System.out.printf("Vector %s with ID %d has a L2-squared distance of %.2f from [0,0,0]%n", Arrays.toString(vector), id, dist);
            }

            // Close the connection
            conn.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Edit this page

On this page

  • Setup
  • Code
PricingDocsTutorialsBlogAbout
LoginSign Up