ජාවා වර්චුවල් මෂින් (JVM) මත වැඩ කරන Kotlin සංවර්ධකයින්ට Qdrant සමඟ වැඩ කිරීමේ අභියෝගයක් තිබුණා. නිල Java ක්ලයන්තය io.qdrant:client භාවිතා කරන විට ListenableFuture, protobuf builder, gRPC/Netty වැනි බරපතල දේවල් අඩංගු වේ. Kotlin හි coroutine භාවිතා කිරීමට බලාපොරොත්තු වූ විට ඒවා Future වෙත පත් වෙනවා.
මෙම ගැටලුවට විසඳුමක් ලෙස Kdrant නමින් නව Kotlin‑ප්රථම ක්ලයන්තයක් හඳුන්වා දී ඇත. සෑම මෙහෙයුමක්ම suspend function එකක් වශයෙන් ඉදිරිපත් කරයි, cancellation සහ timeout වැනි coroutine විශේෂතා පූර්ණයෙන්ම සපයයි. Kdrant එකේ DSL (Domain Specific Language) භාවිතයෙන් collections, points, payloads, filters වැනි සියල්ල type‑safe ලෙස ලියන්න පුළුවන්.
ආරම්භක සැකසුම
- JDK 17+ අවශ්යයි.
- Gradle/Maven හි එකම dependency එක:
io.github.nacode-studios:kdrant-transport-rest:1.1.0 - Docker හරහා Qdrant සෙට්‑අප් කිරීම:
docker run -p 6333:6333 qdrant/qdrant
උදාහරණයක් ලෙස, localhost හි Qdrant සම්බන්ධ කර collection එකක් සාදා, points insert (upsert) කර, සෙවුම් (search) කිරීම පහත පරිදි සිදු වේ.
val qdrant = Kdrant(host = "localhost", port = 6333) { apiKey = System.getenv("QDRANT_API_KEY") }
DSL මගින් vector size, distance, payload වැනි විස්තර සරලව සඳහන් කළ හැක. Filtering සඳහාද Kotlin‑සාදාරණ DSL එකක් ලබා දී ඇත, උදාහරණයක්:
val query = filter { must { "lang" eq "en" "year" gte 2024 } should { matchAny("tag", "featured") } }
පෙරනිමි searchAs<Article> ක්රමය භාවිතා කර, JSON ප්රතිඵලය සෘජුවම data class එකකට deserialize කරගත හැක. Dense‑vector හා sparse‑keyword hybrid search, Reciprocal Rank Fusion (RRF) වැනි උසස් සෙවුම් ආකෘතිද සපයයි.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලංකාවේ AI‑අපලෝඩ්, RAG (Retrieval‑Augmented Generation) වැනි ව්යාපෘති වැඩිවීමත් සමඟ vector database තාක්ෂණය ඉතා වැදගත් වේ. Kdrant භාවිතයෙන්:
- සිසුන් – Kotlin coroutine ගැඹුරු දැනුමක් ලබා ගනිමින්, නවතම vector search API සමඟ පළපුරුද්දක් සොයා ගත හැක.
- ඩිවෙලපර් – ලාභදායී DSL එකකින් code ලිවීමේ වේගය වැඩිවී, gRPC/Netty පරිසර සැකසුම් වලින් මිදුලක් නොමැතිව පාරිභෝගික API ඉදිරිපත් කළ හැක.
- ව්යාපාර – සෙවුම් වේගය, hybrid search සහ Spring Boot starter, Spring AI, LangChain4j සමඟ අන්තර්ගත කිරීමේ පහසුව නිසා recommendation, document search වැනි සේවාවන් ඉක්මනින් නිර්මාණය කළ හැක.
ඉදිරියේදී, gRPC‑අධාරිත client එකේ raw throughput වැඩි විය හැක, නමුත් Kotlin‑ප්රථම Kdrant එම අවශ්යතාවයට වඩා developer experience එක වඩාත් සුහද කරයි.
අවසන් වශයෙන්, Kdrant නවතම Kotlin ecosystem එකේ vector database integration එකක් ලෙස, ශ්රී ලංකාවේ තාක්ෂණික සමාජයට අගය කළ නොහැකි උපකාරයක් වනු ඇත.