Skip to content

Commit 3990a67

Browse files
committed
Improved example
1 parent 6a99cf9 commit 3990a67

3 files changed

Lines changed: 29 additions & 28 deletions

File tree

Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import PackageDescription
55
let package = Package(
66
name: "Pgvector",
77
platforms: [
8-
.macOS(.v10_15),
8+
.macOS(.v13),
99
],
1010
products: [
1111
.library(

README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@ Follow the instructions for your database library:
1818
Enable the extension
1919

2020
```swift
21-
try await connection.query("CREATE EXTENSION IF NOT EXISTS vector", logger: logger)
21+
try await client.query("CREATE EXTENSION IF NOT EXISTS vector")
2222
```
2323

2424
Create a table
2525

2626
```swift
27-
try await connection.query("CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3))", logger: logger)
27+
try await client.query("CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3))")
2828
```
2929

3030
Insert vectors
@@ -33,14 +33,14 @@ Insert vectors
3333
let embedding1 = "[1,1,1]"
3434
let embedding2 = "[2,2,2]"
3535
let embedding3 = "[1,1,2]"
36-
try await connection.query("INSERT INTO items (embedding) VALUES (\(embedding1)::vector), (\(embedding2)::vector), (\(embedding3)::vector)", logger: logger)
36+
try await client.query("INSERT INTO items (embedding) VALUES (\(embedding1)::vector), (\(embedding2)::vector), (\(embedding3)::vector)")
3737
```
3838

3939
Get the nearest neighbors
4040

4141
```swift
4242
let embedding = "[1,1,1]"
43-
let rows = try await connection.query("SELECT id, embedding::text FROM items ORDER BY embedding <-> \(embedding)::vector LIMIT 5", logger: logger)
43+
let rows = try await client.query("SELECT id, embedding::text FROM items ORDER BY embedding <-> \(embedding)::vector LIMIT 5")
4444
for try await row in rows {
4545
print(row)
4646
}
@@ -49,9 +49,9 @@ for try await row in rows {
4949
Add an approximate index
5050

5151
```swift
52-
try await connection.query("CREATE INDEX ON items USING hnsw (embedding vector_l2_ops)", logger: logger)
52+
try await client.query("CREATE INDEX ON items USING hnsw (embedding vector_l2_ops)")
5353
// or
54-
try await connection.query("CREATE INDEX ON items USING ivfflat (embedding vector_l2_ops) WITH (lists = 100)", logger: logger)
54+
try await client.query("CREATE INDEX ON items USING ivfflat (embedding vector_l2_ops) WITH (lists = 100)")
5555
```
5656

5757
Use `vector_ip_ops` for inner product and `vector_cosine_ops` for cosine distance

Tests/PgvectorTests/PostgresNIOTests.swift

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,39 +5,40 @@ import Testing
55

66
final class PostgresNIOTests {
77
@Test func example() async throws {
8-
let config = PostgresConnection.Configuration(
8+
let config = PostgresClient.Configuration(
99
host: "localhost",
1010
port: 5432,
1111
username: ProcessInfo.processInfo.environment["USER"]!,
1212
password: nil,
1313
database: "pgvector_swift_test",
1414
tls: .disable
1515
)
16-
let logger = Logger(label: "postgres-logger")
1716

18-
let connection = try await PostgresConnection.connect(
19-
configuration: config,
20-
id: 1,
21-
logger: logger
22-
)
17+
let client = PostgresClient(configuration: config)
2318

24-
try await connection.query("CREATE EXTENSION IF NOT EXISTS vector", logger: logger)
25-
try await connection.query("DROP TABLE IF EXISTS nio_items", logger: logger)
26-
try await connection.query("CREATE TABLE nio_items (id bigserial PRIMARY KEY, embedding vector(3))", logger: logger)
19+
try await withThrowingTaskGroup(of: Void.self) { taskGroup in
20+
taskGroup.addTask {
21+
await client.run()
22+
}
2723

28-
let embedding1 = "[1,1,1]"
29-
let embedding2 = "[2,2,2]"
30-
let embedding3 = "[1,1,2]"
31-
try await connection.query("INSERT INTO nio_items (embedding) VALUES (\(embedding1)::vector), (\(embedding2)::vector), (\(embedding3)::vector)", logger: logger)
24+
try await client.query("CREATE EXTENSION IF NOT EXISTS vector")
25+
try await client.query("DROP TABLE IF EXISTS nio_items")
26+
try await client.query("CREATE TABLE nio_items (id bigserial PRIMARY KEY, embedding vector(3))")
3227

33-
let embedding = "[1,1,1]"
34-
let rows = try await connection.query("SELECT id, embedding::text FROM nio_items ORDER BY embedding <-> \(embedding)::vector LIMIT 5", logger: logger)
35-
for try await row in rows {
36-
print(row)
37-
}
28+
let embedding1 = "[1,1,1]"
29+
let embedding2 = "[2,2,2]"
30+
let embedding3 = "[1,1,2]"
31+
try await client.query("INSERT INTO nio_items (embedding) VALUES (\(embedding1)::vector), (\(embedding2)::vector), (\(embedding3)::vector)")
3832

39-
try await connection.query("CREATE INDEX ON nio_items USING ivfflat (embedding vector_l2_ops) WITH (lists = 1)", logger: logger)
33+
let embedding = "[1,1,1]"
34+
let rows = try await client.query("SELECT id, embedding::text FROM nio_items ORDER BY embedding <-> \(embedding)::vector LIMIT 5")
35+
for try await row in rows {
36+
print(row)
37+
}
4038

41-
try await connection.close()
39+
try await client.query("CREATE INDEX ON nio_items USING ivfflat (embedding vector_l2_ops) WITH (lists = 1)")
40+
41+
taskGroup.cancelAll()
42+
}
4243
}
4344
}

0 commit comments

Comments
 (0)