summaryrefslogtreecommitdiffstats
path: root/valkey-search.spec
blob: fb3a4a6a46dcea29f91445f1d56149ee8f779ed6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# remirepo/fedora spec file for valkey-search
#
# SPDX-FileCopyrightText:  Copyright 2025 Remi Collet
# SPDX-License-Identifier: CECILL-2.1
# http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
#
# Please, preserve the changelog entries
#

%global cfgname          search.conf
%global libname          search.so
# Github forge
%global gh_vend          valkey-io
%global gh_proj          valkey-search
%global forgeurl         https://github.com/%{gh_vend}/%{gh_proj}
#global commit           afe5de4ce52bb2b80af565a6f297bf330a65d0d8
%global tag              %{version}

Name:              valkey-search
Version:           1.0.1
%forgemeta
Release:           1%{?dist}
Summary:           Vector Similarity Search engine
# this module is BSD-3-Clause
# RapidJSON is MIT
License:           BSD-3-Clause AND MIT
URL:               %{forgeurl}
Source0:           %{forgesource}
# see submodules/CMakeLists.txt
Source1:           makedeps.sh
Source2:           %{name}-deps-%{version}.tgz

# fix check for cached sources
Patch0:            %{name}-offline.patch

BuildRequires:     valkey-devel >= 8.0
BuildRequires:     ninja-build
BuildRequires:     cmake
BuildRequires:     gcc >= 12
BuildRequires:     gcc-c++
BuildRequires:     openssl-devel
%if 0%{?fedora} >= 41
BuildRequires:     openssl-devel-engine
%endif
BuildRequires:     systemd-devel

Requires:          valkey(modules_abi)%{?_isa} = %{valkey_modules_abi}
Requires:          valkey >= 8.0
Supplements:       valkey

Provides:          bundled(highwayhash)
Provides:          bundled(googletest)
Provides:          bundled(grpc) = 1.70.1



%description
valkey-search (BSD-3-Clause), provided as a Valkey module,
is a high-performance Vector Similarity Search engine optimized
for AI-driven workloads. It delivers single-digit millisecond
latency and high QPS, capable of handling billions of vectors
with over 99% recall.

valkey-search allows users to create indexes and perform similarity
searches, incorporating complex filters. It supports Approximate Nearest
Neighbor (ANN) search with HNSW and exact matching using K-Nearest Neighbors
(KNN). Users can index data using either Valkey Hash or Valkey-JSON data types.

While valkey-search currently focuses on Vector Search, its goal is to extend
Valkey into a full-fledged search engine, supporting Full Text Search and
additional indexing options. 


%prep
%setup -q -n %{gh_proj}-%{version} -a2
%patch -P0 -p1 -b .offline

: Configuration file
cat << EOF | tee %{cfgname}
# %{gh_proj}
loadmodule %{valkey_modules_dir}/%{libname}
EOF

cp .build-release/.deps/grpc/LICENSE        LICENSE.grpc
cp .build-release/.deps/highwayhash/LICENSE LICENSE.highwayhash
cp .build-release/.deps/googletest/LICENSE  LICENSE.googletest

: submodules list
grep -E '(github.com|"v)' submodules/CMakeLists.txt


%build
./build.sh --verbose


%install
install -Dpm755 .build-release/*%{libname} %{buildroot}%{valkey_modules_dir}/%{libname}
install -Dpm640 %{cfgname}                 %{buildroot}%{valkey_modules_cfg}/%{cfgname}


%files
%license LICENSE*
%doc *.md
%attr(0640, valkey, root) %config(noreplace) %{valkey_modules_cfg}/%{cfgname}
%{valkey_modules_dir}/%{libname}


%changelog
* Fri Sep  5 2025 Remi Collet <remi@remirepo.net> - 1.0.1-1
- initial package