? Sistema de trapo de pesquisa vetorial
Um sofisticado sistema de recomendação de filmes usando recursos de pesquisa vetorial e RAG (geração aumentada de recuperação), alimentada pelos transformadores de frases do Huggingface e Atlas MongoDB.
? Características
- Pesquisa semântica : utiliza incorporações de sentença para pesquisas de filmes significativas
- Banco de dados vetorial : aproveita os recursos de pesquisa vetorial do MongoDB Atlas
- Processamento em tempo real : gerar incorporações on-the-fly usando a API do Huggingface
- Recuperação eficiente : recomendações de filmes rápidas e precisas com base nas descrições da plotagem
Estrutura do projeto
Vector-Search-RaG/
├── apps/
│ └── semantic_search/
│ ├── __init__.py
│ ├── hf_connection.py # HuggingFace API connection
│ ├── mongo_connection.py # MongoDB connection handler
│ └── movie_recs.py # Movie recommendation logic
├── ragenv/ # Virtual environment
├── LICENSE
└── README.md
Começando
Pré -requisitos
- Python 3.8 ou superior
- Conta do Atlas MongoDB
- Huggingface API Token
- Pip (Python Package Manager)
Configuração do ambiente
- Clone o repositório:
git clone https://github.com/yourusername/Vector-Search-RaG.git
cd Vector-Search-RaG
- Criar e ativar o ambiente virtual:
python -m venv ragenv
source ragenv/bin/activate # On Windows: ragenvScriptsactivate
- Instale dependências:
pip install pymongo requests python-decouple
- Crie um arquivo
.env no diretório raiz com suas credenciais:
MONGODB_URI = your_mongodb_connection_string
HUGGING_FACE_TOKEN = your_huggingface_token
Componentes de configuração
Conexão Huggingface ( hf_connection.py )
- Gerencia conexões com a API do Huggingface
- Usa o modelo
sentence-transformers/all-MiniLM-L6-v2 para gerar incorporações - Lida com a autenticação e manuseio de erros da API
Conexão MongoDB ( mongo_connection.py )
- Estabelece conexão segura com o MongoDB Atlas
- Implementa a segurança do TLS
- Inclui validação de conexão e manuseio de erros
Recomendações de filmes ( movie_recs.py )
- Implementa a funcionalidade de pesquisa vetorial
- Processa consultas de filme e gera recomendações
- Inclui utilitários para buscar e atualizar dados do filme
? Uso
Exemplo de pesquisa básica
from apps . semantic_search . movie_recs import search_movies
# Search for movies with a specific plot description
query = "A group of bandits stage a brazen train hold-up"
search_movies ( query )
Atualizar dados do filme
from apps . semantic_search . movie_recs import fetch_and_update_movies
# Fetch and update movie information
fetch_and_update_movies ()
Detalhes da pesquisa de vetores
O sistema usa a agregação $vectorSearch de MongoDB para pesquisa semântica:
- Gera incorporações usando o transformador de frases de Huggingface
- Pesquisas contra incorporações de enredo pré-computadas armazenadas em MongoDB
- Retorna os filmes mais semanticamente semelhantes baseados em descrições de plotagem
Recursos de segurança
- Criptografia TLS para conexões de MongoDB
- Manuseio de token de API seguro através de variáveis de ambiente
- Validação de certificado para conexões seguras
️ Notas importantes
- Verifique se o cluster do seu MongoDB tem capacidade de pesquisa vetorial ativado
- A API da HuggingFace tem limites de taxa - considere implementar o cache para uso da produção
- Mantenha seu arquivo
.env seguro e nunca o comprometa com o controle de versão
? Considerações de desempenho
- O sistema usa
numCandidates: 100 para cobertura de pesquisa ampla - Os resultados são limitados a 4 filmes por consulta para o tempo de resposta ideal
- Índice de Pesquisa de Vector "PlotSemanticSearch" deve ser configurado corretamente em MongoDB
? Contribuindo
- Fork o repositório
- Crie seu ramo de recursos (
git checkout -b feature/AmazingFeature ) - Comprometa suas mudanças (
git commit -m 'Add some AmazingFeature' ) - Empurre para o ramo (
git push origin feature/AmazingFeature ) - Abra um pedido de tração
Licença
Este projeto está licenciado nos termos do arquivo de licença incluído no repositório.