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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tsearch-1.0.6.tar.gz.
File metadata
- Download URL: tsearch-1.0.6.tar.gz
- Upload date:
- Size: 1.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
64b583ee6469a0ef1026d4bcd26b28acfe52fa73c1da4f864db93543d13c92a4
|
|
| MD5 |
9882685988479c090a62845b4f52eec1
|
|
| BLAKE2b-256 |
87a64841b11d8db0427cdc5fa6d08a62abdab97403a0abd90a0ba51e74d01db6
|
File details
Details for the file tsearch-1.0.6-py3-none-any.whl.
File metadata
- Download URL: tsearch-1.0.6-py3-none-any.whl
- Upload date:
- Size: 3.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
22bb3065cce6c9c817eb36a0b1f31d18e6fa30ecdc4769913972ffab2c9e5154
|
|
| MD5 |
c34aeafcdb6884eb4a2d9d51157394c1
|
|
| BLAKE2b-256 |
4344da2904be2205b41536535a49e64f9961bbd47b954ff226dc37831d5eadbc
|