File size: 4,652 Bytes
752c593
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# 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...