การค้นหาข้อความเต็มและเวกเตอร์ใน Neo4j
ก้าวข้ามการค้นหาแบบตรงกันทุกประการด้วยการเพิ่มดัชนีข้อความเต็มรูปแบบและดัชนีเวกเตอร์ให้ Neo4j เพื่อรองรับการค้นหาข้อความแบบคลุมเครือและคำค้นหาความคล้ายคลึงเชิงความหมายสำหรับงานค้นหาและปัญญาประดิษฐ์ยุคใหม่
การค้นหาข้อความเต็มและเวกเตอร์ใน Neo4j เป็นบทเรียน Neo4j Graph Database Fundamentals ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Neo4j Graph Database Fundamentals และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Neo4j Graph Database Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน
บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ
Why Search Indexes Matter
Plain property lookups in Neo4j are great for exact matches, but real applications need more. Users misspell words, search across multiple fields, and increasingly expect semantic results.
Neo4j extends its capabilities with two specialized index types:
- Full-text indexes for fuzzy, multi-field text search
- Vector indexes for similarity search over embeddings
Both are first-class features you can manage with Cypher.
Creating a Full-Text Index
A full-text index is built over one or more node labels and properties. Once created, it powers tokenized, case-insensitive search.
The example creates an index named movieSearch over the title and plot properties of Movie nodes.
CREATE FULLTEXT INDEX movieSearch
FOR (m:Movie)
ON EACH [m.title, m.plot];Querying a Full-Text Index
You query full-text indexes with the db.index.fulltext.queryNodes procedure. It returns matching nodes plus a relevance score.
This Lucene-style syntax supports wildcards, fuzzy matching with ~, and boolean operators.
CALL db.index.fulltext.queryNodes('movieSearch', 'matrix~')
YIELD node, score
RETURN node.title AS title, score
ORDER BY score DESC;Fuzzy and Wildcard Matching
Full-text search shines with imperfect input. A few common operators:
star~— fuzzy match, tolerates typosstar*— prefix wildcardtitle:matrix— restrict to one fieldmatrix AND reloaded— boolean combination
These let one query handle the messy real-world queries users actually type.
CALL db.index.fulltext.queryNodes('movieSearch', 'title:matr*')
YIELD node, score
RETURN node.title, score;What Are Vector Embeddings?
A vector embedding is a list of numbers that captures the meaning of text, an image, or other data. Items with similar meaning have vectors that point in similar directions.
By storing an embedding as a property on a node, Neo4j can answer questions like find the documents most semantically similar to this one — not just keyword matches.
Creating a Vector Index
Vector indexes require you to declare the dimension (length of the embedding) and the similarity function (cosine or euclidean).
The db.index.vector.createNodeIndex procedure creates one over a label and property. Here we index a 1536-dimension embedding stored on Document nodes.
CALL db.index.vector.createNodeIndex(
'docEmbedding',
'Document',
'embedding',
1536,
'cosine'
);Storing an Embedding on a Node
Embeddings are usually produced by an external model and written back to Neo4j. The db.create.setNodeVectorProperty procedure stores the float array efficiently.
In practice the array has hundreds or thousands of values; it is shortened here for readability.
MATCH (d:Document {id: 'doc-1'})
CALL db.create.setNodeVectorProperty(d, 'embedding', [0.12, -0.04, 0.88])
RETURN d.id;Querying for Similar Nodes
To find the nearest neighbors, call db.index.vector.queryNodes with the index name, the number of results, and a query vector.
It returns nodes ordered by similarity along with a score between 0 and 1.
CALL db.index.vector.queryNodes('docEmbedding', 5, [0.10, -0.02, 0.90])
YIELD node, score
RETURN node.title AS title, score
ORDER BY score DESC;Combining Search with the Graph
The real power of Neo4j is mixing search with traversal. You can find semantically similar documents, then follow relationships to enrich the results.
This query finds similar documents and returns their authors — something a pure vector database cannot do in one step.
CALL db.index.vector.queryNodes('docEmbedding', 3, [0.1, -0.02, 0.9])
YIELD node, score
MATCH (node)<-[:WROTE]-(a:Author)
RETURN node.title, a.name, score;Managing Search Indexes
Like any index, full-text and vector indexes can be listed and dropped. Use SHOW INDEXES to inspect them and DROP INDEX to remove one.
Always check that an index is ONLINE before relying on it in production queries.
SHOW INDEXES
WHERE type IN ['FULLTEXT', 'VECTOR'];
// Remove one:
DROP INDEX docEmbedding IF EXISTS;Best Practices
To get the most from search indexes:
- Keep embedding dimensions consistent with your model output
- Choose
cosinesimilarity for most text embeddings - Re-embed and update vectors when source data changes
- Limit result counts and post-filter with Cypher for relevance
These habits keep searches fast and accurate as data grows.
Quick Check
Test your understanding of Neo4j search indexes.
Recap
You extended Neo4j with two powerful search capabilities:
- Full-text indexes — tokenized, fuzzy, multi-field keyword search via
db.index.fulltext.queryNodes - Vector indexes — semantic similarity over embeddings via
db.index.vector.queryNodes
Best of all, both integrate with graph traversals, letting you blend search relevance with relationship context in a single Cypher query.
เรียนรู้ Neo4j Graph Database Fundamentals ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 12
- บทเรียน
- 48
คำถามที่พบบ่อย
บทเรียน “การค้นหาข้อความเต็มและเวกเตอร์ใน Neo4j” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การค้นหาข้อความเต็มและเวกเตอร์ใน Neo4j” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Neo4j Graph Database Fundamentals ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Neo4j Graph Database Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การค้นหาข้อความเต็มและเวกเตอร์ใน Neo4j”
ก้าวข้ามการค้นหาแบบตรงกันทุกประการด้วยการเพิ่มดัชนีข้อความเต็มรูปแบบและดัชนีเวกเตอร์ให้ Neo4j เพื่อรองรับการค้นหาข้อความแบบคลุมเครือและคำค้นหาความคล้ายคลึงเชิงความหมายสำหรับงานค้นหาและปัญญาประดิษฐ์ยุ… คุณปฏิบัติ Neo4j Graph Database Fundamentals ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Neo4j Graph Database Fundamentals หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Neo4j Graph Database Fundamentals บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การค้นหาข้อความเต็มและเวกเตอร์ใน Neo4j” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Neo4j Graph Database Fundamentals นี้ได้ไหม
ได้ บทเรียน Neo4j Graph Database Fundamentals ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- กระบวนงานที่จัดเก็บและ UDF
- การผสานรวมกับเครื่องมือ BI และการแสดงภาพ
- กระบวนการส่งข้อมูลขั้นสูง
- การค้นหาข้อความเต็มและเวกเตอร์ใน Neo4j