Skip to content

Client Side and Filtering in collection

Kali ini kita akan mencoba untuk mengakses chromadb melalui http network menggunakan HttpClient. Selain itu kita juga akan mencoba menggunakan filtering pada documents atau pada metadata.

Sumber pemebelajaran dan dokumentasi resmi Chrome dapat diakses di https://www.trychroma.com/

Source code hands-on ada pada https://github.com/muhammadfarras/Learn-Chroma

Run Chroma in server Mode

Untuk menajalankan chroma sebagai server, kita dapat menggunakan syntax chroma --run --path {path dari persistance db} pada terminal atau CMD.

Info

Gunakan chroma --help untuk melihat daftar parameter yang tersedia dan manfaatnya.

Code

chroma run --port 9000 --path data_vector/persistance1


                (((((((((    (((((####
            ((((((((((((((((((((((#########
        ((((((((((((((((((((((((###########
        ((((((((((((((((((((((((((############
        (((((((((((((((((((((((((((#############
        (((((((((((((((((((((((((((#############
        (((((((((((((((((((((((((##############
        ((((((((((((((((((((((((##############
        (((((((((((((((((((((#############
            ((((((((((((((((##############
                (((((((((    #########

Saving data to: data_vector/persistance1
Connect to Chroma at: http://localhost:9000
Getting started guide: https://docs.trychroma.com/docs/overview/getting-started

OpenTelemetry is not enabled because it is missing from the config.
Listening on localhost:9000

Accsess Chroma on another server

Untuk terkoneksi ke chroma sever kita dapat menggunakan method HttpClient. Method ini membutuhkan 2 parameter wajib, path untuk menunjukan lokasi fisik vector database dan port port chroma server berjalan. Selain kedua port tersebut ada satu lagi parameter yaitu host, namun jika parameter kosong nilai bawaan adalah localhost.

Code

# Persistance client
persistance_client = chromadb.HttpClient(host='localhost', port=9000)

# Mengambil collection yang seudah ada
collection = persistance_client.get_collection(
    'Peraturan_ketiga',
    embedding_function=ef_googleAI
)

## Mneampilkan objek collection
pp(collection.get_model().metadata)
print(f"\r\nQuery pertama",end="\r\n")

## {'creator': "Muhammad Farras Ma'ruf", 'at_place': 'Kebunsu Bogor'}

Query menggunakan filter pada metadata

Saat meng-query sebuah collection kita juga dapat menggunakan filtering pada documents ataupun pada metadata. Ada beberapa operator yang dapat digunakan diantaranya;

Operator Fungsi Contoh Penggunaan
$eq Equal, untuk mencari kalimat yang sama persis
{"field_metadata" : {"$eq" : "String yang dicari"}}
$or Or, logika atau
{
    "or": [
        {
            "pengarang": {
                "$eq": "Muhammad Farras"
            }
        },
        {
            "pengarang": {
                "$eq": "Farras Muhammad"
            }
        }
    ]
}

Chroma akan mengembalikan document yang memiliki meta data pengarang dengan nilai Muhammad Farras atau Farras Muhammad

$and Logak dan
{
    "and": [
        {
            "pengarang": {
                "$eq": "Muhammad Farras"
            }
        },
        {
            "pengarang": {
                "$eq": "Tania Dwi"
            }
        }
    ]
}

Chroma akan mengembalikan document yang memiliki meta data pengarang Muhammad Farras dan Tania Dwi.

$in atau $nin Operator inklusi, atau mengadung salah satu dari kalimat atau tidak mengadung salah satu dari nilai
"pengarang": {
    "$in": ["Muhammad Farras","Farras Muhammad"]
}
Chroma akan mengembalikan document yang nilai dari metadata pengarang mengadung nilai dari list yang diberikan.
"pengarang": {
    "$nin": ["Muhammad Farras","Farras Muhammad"]
}
Chroma akan mengembalikan document yang nilai dari metadata pengarang tidak mengadung nilai dari list yang diberikan.