Skip to main content

Search Engine

Project description

MySearch

Giới thiệu

MySearch là một module tìm kiếm dựa trên FAISS (Facebook AI Similarity Search) để thực hiện tìm kiếm vector hiệu quả. Hệ thống hỗ trợ tìm kiếm theo khoảng cách cosine và L2, đồng thời quản lý dữ liệu thông qua các lớp hỗ trợ như IndexDB, FaissDB, InfoDB.

Tính năng chính

  • Thêm vector embedding vào FAISS.
  • Tìm kiếm các vector gần nhất dựa trên chỉ số khoảng cách.
  • Xóa vector khỏi cơ sở dữ liệu FAISS.
  • Cập nhật hoặc thay thế vector embedding.
  • Kiểm tra tính nhất quán của cơ sở dữ liệu.

Cấu trúc thư mục

.
├── logs/
│   ├── log_handler.py  # Xử lý ghi log
├── modules/
│   ├── utils/
│   │   ├── checker.py  # Kiểm tra tính hợp lệ của dữ liệu
│   │   ├── faiss_db.py  # Quản lý FAISS
│   │   ├── helper.py  # Hỗ trợ xử lý vector
│   │   ├── index_db.py  # Quản lý index của vector
│   │   ├── info_db.py  # Quản lý thông tin đối tượng
├── my_search.py  # Lớp chính MySearch
├── README.md  # Tài liệu này

Cài đặt

Yêu cầu Python 3.8 trở lên và các thư viện:

pip install faiss-cpu numpy

Hướng dẫn sử dụng

Khởi tạo MySearch

from my_search import MySearch

search_engine = MySearch(distance_type="cosin", element=512)

Tạo collection

list_field = ["id", "name", "vector"]
key_main = "id"
search_engine.create_collection(list_field, key_main)

Thêm dữ liệu vào FAISS

embedding = [[0.1, 0.2, 0.3, ..., 0.512]]  # Danh sách embedding có kích thước 512
list_field = [{"id": 1, "name": "Object1", "vector": embedding[0]}]

search_engine.add(embedding, list_field)

Tìm kiếm

query_vector = [0.1, 0.2, 0.3, ..., 0.512]
result = search_engine.search(query_vector, result_of_num=5)
print(result)

Xóa dữ liệu

search_engine.delete(key_mains=[1])

Cập nhật dữ liệu

new_vector = [0.2, 0.3, 0.4, ..., 0.512]
search_engine.replace(key_mains=[1], embeddings=[new_vector], indexs=[0])

Cấu trúc lớp

MySearch

  • add(embedding, list_field): Thêm một hoặc nhiều vector embedding vào FAISS.
  • search(embedding, result_of_num): Tìm kiếm vector gần nhất.
  • delete(key_mains): Xóa vector theo khóa chính.
  • replace(key_mains, embeddings, indexs, new_key_mains): Thay thế hoặc cập nhật vector.
  • create_collection(list_field, key_main): Tạo tập dữ liệu mới.

Cấu trúc dữ liệu

  • IndexDB: Lưu trữ ánh xạ giữa index FAISS và khóa chính (key_main).
  • FaissDB: Quản lý cơ sở dữ liệu FAISS và thực hiện truy vấn.
  • InfoDB: Quản lý thông tin đối tượng liên quan đến embedding.

Ghi log

Module sử dụng logger để ghi lại quá trình hoạt động. Log được lưu trong thư mục logs/.

Đóng góp

Mọi đóng góp vui lòng gửi pull request hoặc mở issue trên GitHub.

Giấy phép

Dự án này sử dụng giấy phép MIT.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tsearch-1.0.13.tar.gz (27.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tsearch-1.0.13-py3-none-any.whl (2.6 kB view details)

Uploaded Python 3

File details

Details for the file tsearch-1.0.13.tar.gz.

File metadata

  • Download URL: tsearch-1.0.13.tar.gz
  • Upload date:
  • Size: 27.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for tsearch-1.0.13.tar.gz
Algorithm Hash digest
SHA256 8a5d6274f7686076153a21ae9a318a9a81b2b2e9cbf428a79568cc6f5d3eadae
MD5 65b81a76bb2c800b2b9d023b657b6564
BLAKE2b-256 8095e8e54e15b13a20c36024ce0cf97c4131ca75e8c75dfdc4e23f988102a62d

See more details on using hashes here.

File details

Details for the file tsearch-1.0.13-py3-none-any.whl.

File metadata

  • Download URL: tsearch-1.0.13-py3-none-any.whl
  • Upload date:
  • Size: 2.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for tsearch-1.0.13-py3-none-any.whl
Algorithm Hash digest
SHA256 b55913c1b6ce70cad1fc78019ccfda44e9b03328cb95bd5f7381e3fbfb31dcd9
MD5 a7faaef1098813c34ecb6bd0416225fa
BLAKE2b-256 d264e624f548be21c6ee9f2a2b7101eb49ecadee2e1ae130cb3d73835e11db9c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page