| # source SMARTSEARCH/bin/activate | |
| # pip install sentence-transformers faiss-gpu | |
| # pip install --upgrade numpy==1.26 | |
| # Умный поиск по заметкам | |
| # https://telegra.ph/Umnyj-poisk-po-zametkam-07-10 | |
| import os | |
| from sentence_transformers import SentenceTransformer | |
| import faiss | |
| import numpy as np | |
| # 📁 Путь к папке с заметками | |
| NOTES_FOLDER = "notebooks" | |
| # 📌 Модель для смысловых векторов | |
| model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2', token='hf_ZgVT...ULhFTGITiNVdUAG') | |
| # 📥 Загрузка и индексация заметок | |
| def load_notes(folder): | |
| notes = [] | |
| filenames = [] | |
| for file in os.listdir(folder): | |
| if file.endswith(".txt") or file.endswith(".md"): | |
| path = os.path.join(folder, file) | |
| with open(path, "r", encoding="utf-8") as f: | |
| content = f.read() | |
| notes.append(content) | |
| filenames.append(file) | |
| return notes, filenames | |
| # 🔍 Поиск похожих заметок | |
| def semantic_search(query, notes, vectors, filenames, top_k=6): | |
| query_vec = model.encode([query]) | |
| D, I = index.search(query_vec, top_k) | |
| results = [] | |
| for i, idx in enumerate(I[0]): | |
| snippet = notes[idx][:300].replace("\n", " ").strip() | |
| results.append((filenames[idx], D[0][i], snippet)) | |
| return results | |
| # ▶️ Основной блок | |
| notes, filenames = load_notes(NOTES_FOLDER) | |
| vectors = model.encode(notes) | |
| # Построение индекса FAISS | |
| dim = vectors.shape[1] | |
| index = faiss.IndexFlatL2(dim) | |
| index.add(np.array(vectors)) | |
| # 🔁 Цикл запросов | |
| while True: | |
| q = input("\n🔎 Запрос (или 'exit'): ").strip() | |
| if q.lower() in ['exit', 'quit']: | |
| break | |
| results = semantic_search(q, notes, vectors, filenames) | |
| print("\n📚 Результаты:") | |
| for fname, score, snippet in results: | |
| print(f"\n📝 {fname} (схожесть: {score:.2f})") | |
| print(f" → {snippet[:150]}...") | |
| #🔎 Запрос (или 'exit'): When was Amsterdam voted the best city to live in? | |
| # 📚 Результаты: | |
| # 📝 3.txt (схожесть: 0.65) | |
| # → In 2022, Amsterdam was ranked the ninth-best city to live in by the Economist Intelligence Unit[28] and 12th on quality of living for environment and ... | |
| # 📝 12.txt (схожесть: 0.89) | |
| # → In 1300, Amsterdam's population was around 1,000 people.[89] While many towns in Holland experienced population decline during the 15th and 16th centu... | |
| # 📝 10.txt (схожесть: 0.90) | |
| # → Amsterdam is located in the Western Netherlands, in the province of North Holland, the capital of which is not Amsterdam, but rather Haarlem. The rive... | |
| # 📝 1.txt (схожесть: 0.91) | |
| # → Amsterdam (/ˈæmstərdæm/ AM-stər-dam, UK also /ˌæmstərˈdæm/ AM-stər-DAM;[12][13] Dutch: [ˌɑmstərˈdɑm] ⓘ; lit. 'Dam in the Amstel')[14] is the capital[a... | |
| # 📝 7.txt (схожесть: 0.94) | |
| # → The end of the 19th century is sometimes called Amsterdam's second Golden Age.[57] New museums, a railway station, and the Concertgebouw were built; A... | |
| # 📝 11.txt (схожесть: 0.96) | |
| # → Amsterdam has an oceanic climate (Köppen: Cfb)[81] strongly influenced by its proximity to the North Sea to the west, with prevailing westerly winds. ... | |
| # 🔎 Запрос (или 'exit'): How many people live in Amsterdam? | |
| # 📚 Результаты: | |
| # 📝 3.txt (схожесть: 0.69) | |
| # → In 2022, Amsterdam was ranked the ninth-best city to live in by the Economist Intelligence Unit[28] and 12th on quality of living for environment and ... | |
| # 📝 12.txt (схожесть: 0.70) | |
| # → In 1300, Amsterdam's population was around 1,000 people.[89] While many towns in Holland experienced population decline during the 15th and 16th centu... | |
| # 📝 10.txt (схожесть: 0.82) | |
| # → Amsterdam is located in the Western Netherlands, in the province of North Holland, the capital of which is not Amsterdam, but rather Haarlem. The rive... | |
| # 📝 1.txt (схожесть: 0.85) | |
| # → Amsterdam (/ˈæmstərdæm/ AM-stər-dam, UK also /ˌæmstərˈdæm/ AM-stər-DAM;[12][13] Dutch: [ˌɑmstərˈdɑm] ⓘ; lit. 'Dam in the Amstel')[14] is the capital[a... | |
| # 📝 11.txt (схожесть: 1.01) | |
| # → Amsterdam has an oceanic climate (Köppen: Cfb)[81] strongly influenced by its proximity to the North Sea to the west, with prevailing westerly winds. ... | |
| # 📝 2.txt (схожесть: 1.01) | |
| # → Amsterdam's main attractions include its historic canals; the Rijksmuseum, the state museum with Dutch Golden Age art; the Van Gogh Museum; the Dam Sq... | |