Current section
Files
Jump to
Current section
Files
mix.exs
defmodule FaissEx.MixProject do
use Mix.Project
@version "0.1.0"
@source_url "https://github.com/nyo16/faiss_ex"
def project do
[
app: :faiss_ex,
version: @version,
elixir: "~> 1.18",
start_permanent: Mix.env() == :prod,
compilers: [:elixir_make] ++ Mix.compilers(),
make_env: make_env(),
deps: deps(),
name: "FaissEx",
description: description(),
package: package(),
docs: docs(),
source_url: @source_url,
homepage_url: @source_url
]
end
def application do
[extra_applications: [:logger]]
end
defp description do
"Elixir NIF bindings for FAISS (Facebook AI Similarity Search). " <>
"Vector similarity search, index factory, k-means clustering, and optional GPU support."
end
defp package do
[
name: "faiss_ex",
licenses: ["Apache-2.0"],
links: %{"GitHub" => @source_url},
files: ~w(
lib c_src Makefile
mix.exs README.md LICENSE CHANGELOG.md
)
]
end
defp docs do
[
main: "readme",
extras: ["README.md", "CHANGELOG.md"],
source_ref: "v#{@version}",
groups_for_modules: [
"Core API": [FaissEx, FaissEx.Index, FaissEx.Clustering]
],
nest_modules_by_prefix: [FaissEx]
]
end
defp deps do
[
{:elixir_make, "~> 0.9", runtime: false},
{:ex_doc, "~> 0.35", only: :dev, runtime: false},
{:benchee, "~> 1.3", only: :dev, runtime: false}
]
end
defp make_env do
env = %{
"USE_CUDA" => System.get_env("USE_CUDA", "false"),
"FAISS_OPT_LEVEL" => System.get_env("FAISS_OPT_LEVEL", "generic"),
"FAISS_GIT_REPO" =>
System.get_env("FAISS_GIT_REPO", "https://github.com/facebookresearch/faiss.git"),
"FAISS_GIT_REV" => System.get_env("FAISS_GIT_REV", "v1.10.0")
}
case System.get_env("FAISS_PREFIX") do
nil -> env
prefix -> Map.put(env, "FAISS_PREFIX", prefix)
end
end
end